0
Ruby中的序列化可以通過內置的Marshal
模塊完成。 它提供轉儲對象並加載它的方法。紅寶石Marshal.load如何在對象恢復的情況下工作?
我正在寫一些序列化,並想知道如何加載一個對象並恢復其所有屬性,而無需實際調用構造函數?
例如,假設我有一個類
class Test
def initialize(id)
@id = id
end
end
想我是序列化到(假設這可能不會在一般的工作非常簡化方案)
{
"Test": {
"id": 3
}
}
當我想加載它,我想我只是實例化一個新的Test
對象並設置它的屬性。但是,調用new
方法會拋出異常,因爲我還沒有傳入ID。的確,我還沒有開始閱讀ID,一般來說,構造函數可以接受任意數量的參數,我不想爲每個類都編寫自定義邏輯。
當您通過Marshal.load
加載對象時,它只是以某種方式工作。它是如何工作的?