2009-12-01 66 views
6

當使用YAML.load_file時,可以強制Ruby調用初始化方法嗎?我想調用該方法以便爲我不序列化的實例變量提供值。我知道我可以將代碼分解到一個單獨的方法中,並在調用YAML.load_file之後調用該方法,但我想知道是否有更好的方法來處理這個問題。加載用YAML序列化的對象時調用初始化

+0

你能解釋一點關於你想做什麼?我的第一個傾向是創建一個包裝調用load_file的類,然後提供配置文件中不存在的值。我希望能夠提供更完整的解決方案。 – 2009-12-01 04:27:30

回答

3

我不認爲你可以。由於您要添加的代碼對於正在反序列化的類非常具體,因此您應該考慮在該類中添加該功能。例如,讓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")