ruby - 创建一个哈希值作为数组和默认值作为空数组

标签 ruby

<分区>

我想在 Ruby 中创建一个默认值为空数组的哈希

所以,我编码

x = Hash.new([])

但是,当我尝试将一个值压入其中时

x[0].push(99)

所有键都将 99 插入该数组。我该如何解决这个问题?

最佳答案

Lakshmi 是对的。当您使用 Hash.new([]) 创建哈希时,您创建了一个数组对象。

因此,对于哈希中每个 缺失的键,返回相同 数组。

这就是为什么如果共享数组被编辑,更改会反射(reflect)在所有丢失的键上。

使用:

Hash.new { |h, k| h[k] = [] }

为哈希中每个缺失的键创建并分配一个数组,使其成为一个唯一的对象。

关于ruby - 创建一个哈希值作为数组和默认值作为空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367487/

相关文章:

ruby-on-rails - Rails 分页 - 更快地计算总页数?

Ruby send(attribute.to_sym) for Rails 方法

ruby-on-rails - 在 Rails 中获取 "Incomplete response received from application"

ruby-on-rails - getaddrinfo : nodename nor servname provided, 或未知

Ruby:是否可以在模块中定义类方法?

arrays - ruby 在数组中排序哈希

ruby - 如何打印出包含 TAB 字符的 Ruby 文件中的行?

ruby-on-rails - rails 中的线程会自动打开数据库连接吗?

java - 如何在Cloud Foundry中从java调用ruby?

ruby - 测试工作日名称数组是否正确排序?