我使用类和静态方法在命名空间中“范围”函数,类似于C#。但是,每次我向类添加一个新方法时,首先都找不到它。我必须重新启动MATLAB环境(2007a)才能识别新方法。
当然,我可以使用'update'或'refresh'类型命令,这样每次添加函数时都不必重新启动MATLAB环境?
答案 0 :(得分:6)
向CLEAR发出此调用应该这样做:
clear classes
这样做的一个不幸的副作用是它还有效地发出了清除所有,它也清除了工作区中的所有变量(但是,当你关闭并重新启动MATLAB时,无论如何都会发生这种情况)。清除工作空间实际上是有用的,因为它将删除与类的旧版本相同类型的任何变量,这可能无法正确使用 new 你班级的版本。
函数REHASH 可能有效,但我对此表示怀疑(我认为它更多地处理文件路径而不是类定义)。
答案 1 :(得分:1)
清除班级的实例应该有效。
假设您的基础工作区中有一个“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');
如果您在更多位置拥有该类的实例,则可能希望根据需要扩展该脚本。
如果要对继承层次结构中的类进行修改,则可能只需要最后一次清除类名称。
答案 2 :(得分:0)
尝试“clear classname”