我必须在运行时创建一个存储在哈希中的数组。 我怎样才能以聪明的方式实现这一目标? 以下代码不起作用,因为服务[...]不是数组。
services = {}
services["clean"] << 'bathroom'
答案 0 :(得分:3)
除了Neil Slater的语法之外,您还可以使用:
h = Hash.new { |hash, key| hash[key] = [] }
实例化一个默认值为[]
的哈希。
答案 1 :(得分:2)
我可能会这样做:
( services["#{service['service']}"] ||= [] ) << service['attributes']
如果要在哈希中存储nil
或false
,这将无效,因为它依赖于在没有匹配键为false时返回的nil
的真实性,命令||=
操作触发分配新的空数组。
不确定是否有更好的语法。