2016-04-11 3 views
-4

作るために文字列を連結します。これは私のコードであるは私が範囲と配列を結合しようとしているformua [原文]

{"a" => "..--", "b" => "--..", "c" => "----"} 

: " - .."、「--- 文字= "" .. "C" コード= [ "..--"、それは次のようになります。 - "] letter_code = {} X = 0

while x < letters.to_a.length 
    "letter_code[ #{letters.to_a[x]} ]=#{code[x]}" 
    x += 1 
end 
puts "#{letter_code}" 

なぜ連結は、空の文字列を返していますか?

+0

「連結」という言葉を誤解している可能性があります。 – sawa

+1

@sawa 'puts"#{letter_code} "は空文字列を出力します。 :) –

+0

@SergioTulentsevありがとう、私は今それを得た。 OPは '{}'を残し、混乱しました。 – sawa

答えて

0

文字列の補間または文字列の連結によって文字列が生成されるため、コードが機能しません。作成された文字列を魔法のように評価するわけではありません。

私はこのような何かをするだろう:letter_codeに何もしていません

letters = "a".."c" 
code = ["..--", "--..", "----"] 

Hash[letters.zip(code)] 
#>= { "a" => "..--", "b" => "--..", "c" => "----" } 
+0

うわー!以前は.zipを使用していませんでした。 – bscottyoung

0

"letter_code[ #{letters.to_a[x]} ]=#{code[x]}" 

ので。それはちょうど letters.to_a[x]code[x]を評価し、それらを文字列で補間します。したがって、 letter_code{}のままであり、 {}.to_sputsとなり、空の文字列です。

あなたは、その行でletter_codeを変更するには、それを変更したい場合は:それはまだひどいコードですが

letter_code[letters.to_a[x]] = code[x] 

関連する問題