Is there a way to initialize an object through a hash?
constructor, hash, initialization, ruby
Solution
You can define an initialize function on your class:
class A
attr_accessor :b,:c,:d
def initialize(h)
h.each {|k,v| public_send("#{k}=",v)}
end
end
Or you can create a module and then "mix it in"
module HashConstructed
def initialize(h)
h.each {|k,v| public_send("#{k}=",v)}
end
end
class Foo
include HashConstructed
attr_accessor :foo, :bar
end
Alternatively you can try something like constructor
Problem
If I have this class: ``` class A attr_accessor :b,:c,:d end ``` and this code: ``` a = A.new h = {"b"=>10,"c"=>20,"d"=>30} ``` is it possible to initialize the object directly from the hash, without me needing to go over each pair and call `instance_variable_set`? Something like: ``` a = A.new(h) ``` which should cause each instance variable to be initialized to the one that has the same name in the hash.