我正在使用類和靜態方法在名稱空間中'範圍'函數,類似於C#。然而,每次我給課程添加一個新的方法,起初都沒有找到。我必須重新啓動MATLAB環境(2007a)才能識別新的方法。如何讓MATLAB識別新添加的靜態方法?
當然,我可以使用'update'或'refresh'類型的命令,以便每次添加函數時都不必重新啓動MATLAB環境。
我正在使用類和靜態方法在名稱空間中'範圍'函數,類似於C#。然而,每次我給課程添加一個新的方法,起初都沒有找到。我必須重新啓動MATLAB環境(2007a)才能識別新的方法。如何讓MATLAB識別新添加的靜態方法?
當然,我可以使用'update'或'refresh'類型的命令,以便每次添加函數時都不必重新啓動MATLAB環境。
嘗試「清類名」你們班應該工作的
結算情況。
假設你在你的基礎工作空間中有 「MyClass的」 的一個實例:
foo = MyClass;
現在,假設你編輯MyClass的,並添加新的靜態方法 「棒」:
foo.bar(); % Will cause error, as foo is instance of previous "MyClass"
然而, 「clear」-ing foo將刪除對前一個類的引用:
clear('foo');
foo = MyClass;
foo.bar(); % this should now work.
這應該沒問題,如果你基本工作空間中只有一個或兩個類的實例。如果你有類的許多情況下,你的基地工作區,那麼你可能需要編寫一個腳本來清除它們:
varList = whos;
for iVar = 1:numel(varList)
if isequal('MyClass', varList(iVar).class)
clear(varlist(iVar).name);
end
end
clear('varList');
clear('MyClass');
如果您在多個位置的類的實例,你可能要延長腳本作爲適當的。
如果您要對繼承層次結構中的類進行修改,則只需要最後一次清除類名的調用。
這樣做的工作,謝謝!是否有可能在個人課上做到這一點? – Brendan 2009-07-01 15:56:14
據我所知,沒有辦法使用CLEAR來更新已修改的單個類。這是全部或沒有! =) – gnovice 2009-07-01 16:56:13
試過rehash,沒有任何選項的工作。認爲明確的課程是唯一的方式,歡呼! – Brendan 2009-07-01 20:24:48