我正在使用类和静态方法在名称空间中'范围'函数,类似于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