配列が存在するかどうかをチェックして配列を作成して空にする行と、新しい要素を配列にプッシュする行を1行に凝縮する方法はありますか?
hash = {}
(('a'..'z').to_a+('a'..'z').to_a).shuffle.each do |e|
hash[:"#{e}"] ||= []
hash[:"#{e}"] << rand(10)
end
「||=」というスタイルの何かを探していますが、「<<」オペランドについては助けてくれてありがとう
配列が存在するかどうかをチェックして配列を作成して空にする行と、新しい要素を配列にプッシュする行を1行に凝縮する方法はありますか?
hash = {}
(('a'..'z').to_a+('a'..'z').to_a).shuffle.each do |e|
hash[:"#{e}"] ||= []
hash[:"#{e}"] << rand(10)
end
「||=」というスタイルの何かを探していますが、「<<」オペランドについては助けてくれてありがとう
(hash[e.to_sym] ||= []) << rand(10)
代わりに、ハッシュを別の方法で定義できます。
hash = Hash.new {|h, k| h[k] = []}
(('a'..'z').to_a+('a'..'z').to_a).shuffle.each do |e|
hash[:"#{e}"] << rand(10)
end
arr.inject({}){|h, x| (h[x.to_sym] || = []) << rand(10); h }