0

有没有一种方法可以将检查数组是否存在并创建和清空的行以及将新元素推入其中的行压缩成一行?

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

我正在寻找更多的风格“||=”但是对于“<<”操作数感谢您的帮助

4

3 回答 3

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
于 2012-12-05T08:24:15.217 回答
1
(hash[e.to_sym] ||= []) << rand(10)
于 2012-12-05T08:27:28.487 回答
-1

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

于 2012-12-05T09:39:46.523 回答