Как мне создать три объекта с одной строкой кода? - PullRequest
2 голосов
/ 19 июня 2011

Как бы я создал три пустых хеша с одной строкой кода?

Я знаю, что 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, но это выглядит не очень СУХОЙ.

Ответы [ 4 ]

5 голосов
/ 19 июня 2011

Поскольку я отправил комментарий, я думаю, что a, b, c = {}, {}, {} - лучший способ, потому что он короткий и легкий для чтения. Если вы действительно хотите сделать это более сложным способом, что-то вроде этого будет работать:

>> a, b, c = Array.new(3) { Hash.new } #=> [{}, {}, {}]
>> a #=> {}
>> b #=> {}
>> c #=> {}
3 голосов
/ 19 июня 2011

Я не совсем уверен, если бы я использовал это, но это возможно:

a, b, c = 3.times.map { Hash.new }
# or
a, b, c = (1..3).map { Hash.new }
1 голос
/ 27 декабря 2011

Я не совсем уверен, если бы я использовал это, но это возможно:

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{{}}
1 голос
/ 19 июня 2011

Хотя вы уже отметили ответ, я бы добавил другой способ, который я считаю самым простым:

...