2013-06-12 122 views
-1

我必须在运行时创建一个数组,存储在一个哈希中。 我怎样才能以聪明的方式实现这一点? 由于服务不是数组,因此以下代码无法使用。数组动态哈希

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

回答

3

或者尼尔·斯莱特的语法,你可以使用:

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

实例的哈希与[]的默认值。

+0

我不知道。更好的语法。除非它可以自动生成所有关键查找,当你不想要的时候。 –

+0

什么是自动生动? –

+0

对于散列的哈希散列: services = Hash.new {| hash,key | hash [key] = Hash.new {| hash2,key2 | hash2 [key2] = []}} –

2

我可能会做这样的事情:

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

,如果你想存储nilfalse在你的哈希值,这是行不通的,因为它依赖于nil的感实性时,有没有返回匹配键为假,以便||=操作触发分配新的空数组。

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