h = {1=>[1,2,3], 2=>[4,5,6]} new_arr = [] h.each_value {|arr| new_arr.concat(arr) }
これはうまくいくが、ルビーのようなやり方は何ですか?ルビーの配列のハッシュを集める
すべての値は配列ですが、各配列の要素は変更しないでください。
h.values.reduce(&:+)
h = {1=>[1,2,3], 2=>[4,5,6]} new_arr = [] h.each_value {|arr| new_arr.concat(arr) }
これはうまくいくが、ルビーのようなやり方は何ですか?ルビーの配列のハッシュを集める
すべての値は配列ですが、各配列の要素は変更しないでください。
h.values.reduce(&:+)
どのようにこのについてです:
あなたは減らす使用することができますか?
h.values.flatten
。 &とは何ですか? – MxyL
Enumerableは、ほとんどすべての列挙可能なデータ構造(ハッシュ、配列、セットなど)がルビーで混在するモジュールです。 Ruby言語の他のほとんどの部分よりも勉強してください;)http://ruby-doc.org/core-1.9.3/Enumerable.html '&:+'構文は '&'(proc)です。実際にブロックを渡すのではなく、メソッドの呼び出しを指定する方法であるSymbol ':+'が続きます。この場合、 'values'配列の各要素に対して' + 'が呼び出されます。 – d11wtq
oh、ok。はい、私は列挙可能なクラスがたくさん現れるのを見ました。 – MxyL
ハッシュ値の配列を取得する場合は、ハッシュ値を使用します。
new_arr = h.values
少し不可解
h.flat_map(&:last)
少し冗長な私は減らす方法が定義されている場所を見つけることができないよう
h.flat_map{|_, value| value}
確かに最も簡単な解決策です。 – d11wtq
あなたがするべきではないものを平らにするかもしれないと心配しているならば、 'h.values.flatten(1)'を使うことができます。 –