2013-08-16 17 views
37

Bir karma üzerinde each_with_object kullanmak istiyorum ama bunu nasıl kullanmaları gerektiğini bilemiyorum.Hash_'de her_with_object öğesini nasıl kullanmalıyım?

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

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

o sağlamalarının each_with_object kullanmak mümkün mü: İşte ne var? Varsa, sözdizimi nedir?

cevap

77

Kullanım ():

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

i '()' bloklar halinde argümanlar bilgiye buradan bulabilirim? – andfb18

+0

@ andfb18 bkz [Sayım açıklaması] (https://ruby-doc.org/core/Enumerator.html#method-i-each_with_object). Bloklar ve argümanlar bazen kafa karıştırıcı olabilir. [İlk İlk Yakut] 'un 5. Bölümünde en mükemmel blokları önerebilirim (http://headfirstruby.com). –

+0

O "Dizi Ayrışma" denir ve bunu [buradan] öğrenebilir @ andfb18 (https://ruby-doc.org/core-2.4.3/doc/syntax/assignment_rdoc.html#label-Array+Decomposition). –

İlgili konular