I'm trying to understand the following Ruby code.
It looks like attrs
is a hash that gets passed as an argument with a default value of an empty hash.
Then attrs.each
iterates over the key, value pairs in the hash (|k,v|
).
What effect is achieved by calling self.send
on the elements of the key value pair during this iteration?
def initialize(attrs = {}, *args)
super(*args)
attrs.each do |k,v|
self.send "#{k}=", v
end
end
send
calls the method in the first parameter, and passes the rest of the parameters as arguments.
In this case I assume what's in attrs
is a list of attributes. Let's say it's something like this:
{ :name => "John Smith" }
So then in the loop, it does this:
self.send "name=", "John Smith"
which is equivalent to
self.name = "John Smith"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With