Ruby 连接字符串以使其成为formua[原文如此]

Ruby 连接字符串以使其成为formua[原文如此],ruby,hash,Ruby,Hash,我正在尝试将范围和数组结合起来: letters = "a".."c" code = ["..--", "--..", "----"] 要填充哈希字母\u代码。它应该是这样的: {"a" => "..--", "b" => "--..", "c" => "----"} 这是我的代码: 字母=“a”.“c” 代码=[“.-”、“-…”、“----”] 字母_代码={} x=0 while x < letters.to_a.length "letter_code[ #

我正在尝试将范围和数组结合起来:

letters = "a".."c"
code = ["..--", "--..", "----"]
要填充哈希
字母\u代码
。它应该是这样的:

{"a" => "..--", "b" => "--..", "c" => "----"}
这是我的代码: 字母=“a”.“c” 代码=[“.-”、“-…”、“----”] 字母_代码={} x=0

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

为什么连接返回空字符串?

您的代码不起作用,因为字符串插值或字符串连接生成字符串。它不会神奇地计算创建的字符串

我会这样做:

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

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

"letter_code[ #{letters.to_a[x]} ]=#{code[x]}"
没有对
字母\u code
执行任何操作。它只计算字母。到a[x]
code[x]
,并将它们插入字符串中。因此,
字母\u code
保持为
{}
,而
{}.to\u s
是一个空字符串,由
放置
调用

如果要按该行更改字母代码,请将其更改为:

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

尽管这仍然是一个糟糕的代码。

您可能误解了“连接”这个词。@sawa
将“{letter\u code}”放入“
打印一个空字符串。:)@SergioTulentsev谢谢,我现在知道了。OP离开了
{}
,令人困惑。“福尔摩斯”是什么?另外,您谈论的是字符串,但您的代码使用散列。是哪一个?