Próbuję zrozumieć następujący kod Rubiego.Wywoływanie self.send iteracyjnie na argumentach mieszania w celu zainicjowania()
Wygląda na to, że attrs
to skrót, który jest przekazywany jako argument z domyślną wartością pustego hasha.
Następnie attrs.each
iteruje po kluczach, pary wartości w haszdzie (|k,v|
).
Jaki efekt uzyskuje się, wywołując self.send
na elementach pary klucz-wartość podczas tej iteracji?
def initialize(attrs = {}, *args)
super(*args)
attrs.each do |k,v|
self.send "#{k}=", v
end
end
+1 Uwielbiam używając tego kodu na elastyczne tworzenie/inicjowanie obiektu. Zobacz mój answer @ http://stackoverflow.com/questions/1778638/idiomatic-object-creation-in-ruby/5272354#5272354 – abe