【发布时间】:2011-09-20 23:14:08
【问题描述】:
有没有办法在 MATLAB 类中定义静态成员变量?
这不起作用:
classdef A
properties ( Static )
m = 0;
end
end
建议使用关键字“Constant”而不是“Static”,常量属性不能修改。我想要一个对 A 类的所有对象都通用的变量,并且我希望能够在 A 类的方法中修改该变量。
所以我需要的是一个私有静态成员变量。有没有办法在 MATLAB 中获取?
发现一种解决方法可以在静态成员函数中使用持久变量。
在这种情况下,您应该从一个基类继承所有类,如下所示。
classdef object < handle
properties ( GetAccess = 'public', SetAccess = 'private' )
id
end
methods ( Access = 'protected' )
function obj = object()
obj.id = object.increment();
end
end
methods ( Static, Access = 'private' )
function result = increment()
persistent stamp;
if isempty( stamp )
stamp = 0;
end
stamp = stamp + uint32(1);
result = stamp;
end
end
end
【问题讨论】:
-
AFAIK 不适合它,但 persistent 有效吗?
-
是的,我在静态成员函数中获得了使用持久变量的解决方法。
-
您应该将其发布为其他对此问题感兴趣的人的答案
-
persistent虽然不会为子类单独分配
标签: matlab class oop static-functions matlab-class