-1

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

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

2 回答 2

3

替代 Neil Slater 的语法,您可以使用:

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

用默认值实例化一个哈希[]

于 2013-06-12T12:40:46.230 回答
2

我可能会做这样的事情:

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

nil如果您想存储或在您的哈希中,这将不起作用false,因为它依赖于在nil没有匹配键为假时返回的真实性,以便||=操作触发分配一个新的空数组。

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

于 2013-06-12T12:28:01.397 回答