Вызов инициализации при загрузке объекта, сериализованного с YAML - PullRequest
6 голосов
/ 01 декабря 2009

Можно ли заставить Ruby вызывать метод инициализации при использовании YAML.load_file? Я хочу вызвать метод для предоставления значений для переменных экземпляра, которые я не сериализую. Я знаю, что могу выделить код в отдельный метод и вызвать этот метод после вызова YAML.load_file, но мне было интересно, есть ли более элегантный способ решения этой проблемы.

1 Ответ

3 голосов
/ 01 декабря 2009

Не думаю, что ты можешь. Поскольку код, который вы добавите, действительно специфичен для десериализованного класса, вам следует рассмотреть возможность добавления этой функции в класс. Например, пусть Foo будет классом, который вы хотите десериализовать, вы можете добавить метод класса, такой как:

class Foo
  def self.from_yaml( yaml )
    foo = YAML::load( yaml )
    # edit the foo object here
    foo
  end
end

myFoo = Foo.from_yaml( "myFoo.yaml" )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...