哈希的数组动态

时间:2013-06-12 12:19:22

标签: ruby arrays dynamic hash

我必须在运行时创建一个存储在哈希中的数组。 我怎样才能以聪明的方式实现这一目标? 以下代码不起作用,因为服务[...]不是数组。

services = {}
services["clean"] << 'bathroom'

2 个答案:

答案 0 :(得分:3)

除了Neil Slater的语法之外,您还可以使用:

h = Hash.new { |hash, key| hash[key] = [] }

实例化一个默认值为[]的哈希。

答案 1 :(得分:2)

我可能会这样做:

( services["#{service['service']}"] ||= [] ) << service['attributes']

如果要在哈希中存储nilfalse,这将无效,因为它依赖于在没有匹配键为false时返回的nil的真实性,命令||=操作触发分配新的空数组。

不确定是否有更好的语法。

相关问题