2013-08-16 20 views
37

私はeach_with_objectをハッシュに使用したいと思いますが、どのように使用するべきかわかりません。ここで私が持っているものです。ハッシュでeach_with_objectを使用するにはどうすればよいですか?

hash = {key1: :value1, key2: :value2} 
hash.each_with_object([]) { |k, v, array| array << k } 

NoMethodError: undefined method `<<' for nil:NilClass 

はハッシュにeach_with_objectを使用することが可能ですか?はいの場合、構文は何ですか?

答えて

77

使用()

hash.each_with_object([]) { |(k, v), array| array << k } 
+0

iは '()'ブロック内の引数についてinformatin見つけることができますか? – andfb18

+0

@ andfb18 [列挙子の説明](https://ruby-doc.org/core/Enumerator.html#method-i-each_with_object)を参照してください。ブロックや議論は時々困惑するかもしれません。 [Head First Ruby](http://headfirstruby.com)の第5章で、最も優れたブロックの紹介をお勧めします。 –

+0

@ andfb18これは「配列分解」と呼ばれ、それについて[ここ](https://ruby-doc.org/core-2.4.3/doc/syntax/assignment_rdoc.html#label-Array+Decomposition)で学ぶことができます。 –

関連する問題