如何用一行代码创建三个空哈希?
我知道a = b = c = Hash.new
不起作用,因为它会创建对同一个Hash对象的三个引用。
a,b,c = Hash.new
会将Hash
分配给a
,但b
和c
仍为nil
。
我知道我可以做a, b, c = Hash.new, Hash.new, Hash.new
,但这看起来不是很干。
答案 0 :(得分:5)
正如我发表的评论,我认为a, b, c = {}, {}, {}
是最好的方式,因为它简短易读。如果你真的想以更复杂的方式做这件事,那么这样的事情就会起作用:
>> a, b, c = Array.new(3) { Hash.new } #=> [{}, {}, {}]
>> a #=> {}
>> b #=> {}
>> c #=> {}
答案 1 :(得分:3)
我不确定我是否会使用它,但有可能:
a, b, c = 3.times.map { Hash.new }
# or
a, b, c = (1..3).map { Hash.new }
答案 2 :(得分:1)
虽然你已经标记了一个答案,但我会选择另一种我认为最简单的方式:
a,b,c = [{}]*3
答案 3 :(得分:1)
我不确定我是否会使用它,但有可能:
a, b, c = 3.times.map { Hash.new }
#or
a, b, c = (1..3).map { Hash.new }
还有另一个答案..因为您只需使用{}
代替Hash.new
分配可以是这样的:
a, b, c = 3.times.map{{}}