Существует ли способ инициализировать объект через хеш?

Создание HashMap этих объектов на основе значения поля как ключ могло стоить с точки зрения производительности, например, заполнить Карты однажды и найти объекты очень эффективно

37
задан Martin B 15 October 2009 в 14:30
поделиться

1 ответ

Вы можете определить функцию инициализации в своем классе:

class A
  attr_accessor :b,:c,:d
  def initialize(h)
    h.each {|k,v| public_send("#{k}=",v)}
  end
end

Или вы можете создать модуль, а затем «смешать его с "

module HashConstructed
 def initialize(h)
  h.each {|k,v| public_send("#{k}=",v)}
 end
end

class Foo
 include HashConstructed
 attr_accessor :foo, :bar
end

В качестве альтернативы вы можете попробовать что-нибудь вроде конструктора

51
ответ дан 27 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: