2013-08-16 36 views
37

Tôi muốn sử dụng each_with_object trên băm nhưng không thể tìm ra cách tôi nên sử dụng nó. Dưới đây là những gì tôi có:Tôi nên sử dụng each_with_object trên Hashes như thế nào?

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

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

Có thể sử dụng each_with_object trên băm không? Nếu có, cú pháp là gì?

Trả lời

77

Sử dụng ():

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

nơi tôi có thể tìm informatin về '()' trong khối lập luận? – andfb18

+0

@ andfb18 xem [Mô tả điều tra viên] (https://ruby-doc.org/core/Enumerator.html#method-i-each_with_object). Các khối và các đối số đôi khi có thể khó hiểu. Tôi có thể giới thiệu các khối giới thiệu tuyệt vời nhất trong Chương 5 của [Head First Ruby] (http://headfirstruby.com). –

+0

@ andfb18 Nó được gọi là "Phân hủy mảng" và bạn có thể tìm hiểu về nó [ở đây] (https://ruby-doc.org/core-2.4.3/doc/syntax/assignment_rdoc.html#label-Array+Decomposition). –

Các vấn đề liên quan