2009-02-27 2 views
0

Я сохранил объект класса Foo с помощью foo.to_yaml. Теперь я добавил переменную экземпляра в класс Foo со значением по умолчанию, установленным в 0 в методе инициализации. теперь, когда я пытаюсь загрузить объект из файла yaml, переменная экземпляра устанавливается на nil.Как указать значения по умолчанию при загрузке файлов с помощью yaml?

Есть ли способ, которым я могу установить его в 0, если файл yaml не содержит никакого значения для этой переменной экземпляра?

Есть ли какой-то метод обратного вызова, вызываемый объектом после его загрузки с диска?

ответ

1

Вы можете создать метод чтения для этой переменной, как

def your_instance_variable 
    return "default" unless @your_instance_variable 
    @your_instance_variable 
end 

P.S. Я делал некоторые задачи с сериализацией объектов некоторое время назад, и AFAIK Marshal.dump/load был намного быстрее