基本上,我已經有一個Ruby對象的實例,但想要更新我可以從yaml得到的任何實例變量。有一個to_yaml函數可以將我的對象轉儲到yaml。我正在尋找相反的東西。例如,my_obj.from_yaml(yaml_stuff)並讓它更新yaml中的實例變量。如何使用YAML更新已經實例化的Ruby對象?
我需要在我的from_yaml函數中使用YAML :: load並複製每個實例變量嗎?有沒有一個函數可以用來快速複製這些變量,而不需要太多打字,如果是這樣的話?
Ruby的yaml庫是否有一些東西已經存在,我可以將它傳遞給對象和yaml,它會做我想做的事情?
編輯爲清楚起見
這是一個簡單的對象,將存儲和加載非常簡單YAML兼容的類型,比如字符串和整數。
我最終什麼事做
雖然我回答這個問題,我想補充什麼,我終於實現了,我的對象猴補丁
class Object
def from_yaml(yml)
if (yml.nil?)
return
end
yml.instance_variables.each do |iv|
if (self.instance_variable_defined?(iv))
self.instance_variable_set(iv, yml.instance_variable_get(iv))
end
end
end
end
對不起,如果我不清楚。對象成員由非常簡單的YAML兼容類型組成。我不知道這個功能是否已經存在於ruby的yaml庫中,或者如果我需要做一些特殊的事情。這聽起來像我需要做一些特殊的事情。我可能需要將其作爲一個不同的問題發佈,但將實例數據存儲在散列中並使用method_missing更新數據會有好處嗎?然後,我可以只是在進出哈希。 – Justin 2010-11-10 19:04:11
我喜歡它。謝謝! – Justin 2010-11-10 20:00:05