用于将元素添加到可能不存在的数组的一个衬垫

时间:2012-12-05 08:19:18

标签: ruby

有没有办法将凝结凝结成一行,检查数组是否存在并创建并清空一个,以及将一个新元素推入其中的那一行?

hash = {}
(('a'..'z').to_a+('a'..'z').to_a).shuffle.each do |e|
    hash[:"#{e}"] ||= []
    hash[:"#{e}"] << rand(10)
end

我正在寻找更多的风格“|| =”但是对于“&lt;&lt;”操作数 谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

您可以改为以不同方式定义哈希:

hash = Hash.new {|h, k| h[k] = []}
(('a'..'z').to_a+('a'..'z').to_a).shuffle.each do |e|
    hash[:"#{e}"] << rand(10)
end

答案 1 :(得分:1)

(hash[e.to_sym] ||= []) << rand(10)

答案 2 :(得分:-1)

arr.inject({}){|h, x| (h[x.to_sym] || = []) << rand(10); h }