我有以下代码,它工作正常。
months = {"Feb"=>["day1", "day2"]}
i = 0
while i < 5 do
months["Feb"][i] = "day#{i}"
i += 1
end
puts months
$> {"二月"=>["第 0 天", "第 1 天", "第 2 天", "第 3 天", "第 4 天"]}
但是,如果我删除初始化哈希的第一行或尝试动态地将值添加到不同的哈希键,则会收到“months”未定义的错误。
所以我很困惑。 Ruby 不允许您任意向哈希添加键吗?我习惯了 Perl,你可以随心所欲地开始创建哈希值和数组。但我知道 Perl 将哈希和数组视为单独的对象,而 Ruby 则认为一切都相同,所以我不知道它是否与此有关(尽管 Perl 的方式可能是“草率”^_^ )
最佳答案
在 Ruby 中,您必须在使用变量之前对其进行初始化(看起来是一个合理的策略...)。另请注意,您编写的内容不是惯用的 Ruby,而是另一种选择:
months = {"Feb" => 0.upto(4).map { |i| "day#{i}" }}
更新:
months["Feb"] = 0.upto(4).map { |i| "day#{i}" }
关于Ruby:如何添加到数组的新哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12872477/