Вы также можете использовать send
, который запрещает пользователю устанавливать несуществующие переменные экземпляра:
def initialize(hash)
hash.each { |key, value| send("#{key}=", value) }
end
Используйте send
, когда в вашем классе есть сеттер, такой как attr_accessor
для вашего экземплярапеременные:
class Example
attr_accessor :foo, :baz
def initialize(hash)
hash.each { |key, value| send("#{key}=", value) }
end
end