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