Tôi đang cố gắng hiểu mã Ruby sau.Gọi self.send lặp lại trên một đối số băm để khởi tạo()
Có vẻ như attrs
là một băm được chuyển thành đối số với giá trị mặc định của một băm trống.
Sau đó, attrs.each
lặp lại các cặp khóa, giá trị trong mã băm (|k,v|
).
Hiệu quả đạt được bằng cách gọi self.send
trên các phần tử của cặp giá trị khóa trong lần lặp này?
def initialize(attrs = {}, *args)
super(*args)
attrs.each do |k,v|
self.send "#{k}=", v
end
end
+1 Tôi thích sử dụng mã này để linh hoạt tạo đối tượng/khởi tạo. Xem câu trả lời của tôi @ http://stackoverflow.com/questions/1778638/idiomatic-object-creation-in-ruby/5272354#5272354 – abe