Ruby:如何添加到数组的新哈希?

标签 ruby arrays hash

我有以下代码,它工作正常。

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/

相关文章:

相当于 PHP 的 ".="(点等于)运算符的 Ruby

java - Double 无法取消引用 Java 编译器错误

c - 对 double 组进行排序非常慢,而且更慢

javascript - typescript 索引获取/设置

php - PasswordHash 检查和登录

javascript - 使用加密 node.js 库,无法快速连续多次创建 SHA-256 哈希

ruby - 面向对象的方式来处理复杂的方法

ruby-on-rails - 运行 Ruby on Rails 数据库迁移时出错

Java : hash function

ruby - 从散列中删除空值