【发布时间】:2009-07-01 14:31:03
【问题描述】:
我正在使用类和静态方法来“作用域”命名空间中的函数,类似于 C#。但是,每次我向一个类添加一个新方法时,一开始都找不到。我必须重新启动 MATLAB 环境(2007a)才能识别新方法。
肯定有我可以使用的“更新”或“刷新”类型的命令,这样我每次添加函数时都不必重新启动 MATLAB 环境?
【问题讨论】:
我正在使用类和静态方法来“作用域”命名空间中的函数,类似于 C#。但是,每次我向一个类添加一个新方法时,一开始都找不到。我必须重新启动 MATLAB 环境(2007a)才能识别新方法。
肯定有我可以使用的“更新”或“刷新”类型的命令,这样我每次添加函数时都不必重新启动 MATLAB 环境?
【问题讨论】:
【讨论】:
清除类的实例应该可以工作。
假设您的基础工作区中有一个“MyClass”实例:
foo = MyClass;
现在,假设您编辑 MyClass 并添加新的静态方法“bar”:
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');
如果您在更多位置有该类的实例,您可能希望适当地扩展脚本。
只有在对继承层次结构中的类进行修改时,才可能需要最后一次调用来清除类名。
【讨论】:
mlocked函数中)
尝试“清除类名”
【讨论】: