我嘗試在模塊中定義一個函數,然後使用DumpSave
將函數定義保存到文件中。但是,重新加載功能失敗。這裏有一個小例子如何轉儲保存一個函數?
buildf[]:= Module[{res},
res[x_]:=x^2;
res
];
f=buildf[];
DumpSave["f.mx", f];
Clear[f];
Get["f.mx"]
現在我希望f
是方形的功能,但它仍然是Clear
語句後不確定。我該如何解決這個問題?
幾個月前,這個問題與my earlier question密切相關,但是那裏的解決方案並沒有幫助我。
任何暗示讚賞!
更新 的buildf
正在讀幾個數據文件,將它們轉換,定義基於這些規則,並調用調度,使查找快。然後由buildf
返回的函數就像數據的API。我想避免調用buildf
,而是加載創建的數據函數的二進制轉儲。
Save
方法似乎很有前途,但它仍然無法正常工作。我會嘗試隔離問題,以便在此處重現。
最後更新 後@Leonid的局部變量的唯一性無法跨會話保證的評論,我決定使用僅依賴於其他符號普通的數據結構,而不是功能這個「DumpSave緩存機制」。
你說:「這個局部變量具有Temporary屬性,可以在任何時候被刪除(因此f可以停止工作)。」你能證明這是真的嗎? * Mathematica *實際上是垃圾收集這樣的東西? –
@ Mr.Wizard不,我現在不能,我從文檔中獲得:「臨時屬性的符號在不再需要時會自動刪除。」我對這個答案也很感興趣,但現在是我的就寢時間。我會明天檢查:-) – Szabolcs
好的。我認爲關鍵是「不再需要」的意思。 –