在Matlab中,我想在一个类的私有成员执行某些操作。 我也想对其他类执行此相同任务为好。 显而易见的解决方案是在一个单独的M档,所有的类以执行此任务调用编写一个函数。 然而,在Matlab(见下文)似乎是不可能的。 有另一种方式来做到这一点?
这里的问题是具体为:假设我有与内容之一M档
classdef PrivateTest
properties (Access=private)
a
end
methods
function this = directWrite(this, v)
this.a = v;
end
function this = sameFileWrite(this, v)
this = writePrivate(this, v);
end
function this = otherFileWrite(this, v)
this = otherFileWritePrivate(this, v);
end
function print(this)
disp(this.a);
end
end
end
function this = writePrivate(this, v)
this.a = v;
end
...并与内容的另一个M档
function this = otherFileWritePrivate(this, v)
this.a = v;
end
实例化后p = PrivateTest
,这两个命令的正常工作(如预期):
p = p.directWrite(1);
p = p.sameFileWrite(2);
...但这个命令不即使是相同的代码,只是在不同的M档的工作:
p = p.otherFileWrite(3);
因此,它似乎像上一类的私有属性进行操作必须在同一个M档的定义这些私人性质的classdef任何代码。 另一种可能性是让所有的类都继承与写作方法的类,但Matlab的不允许这样无论是。 在一个M档,我有这样的代码:
classdef WriteableA
methods
function this = inheritWrite(this, v)
this.a = v;
end
end
end
......而在另一个M档我有这样的代码:
classdef PrivateTestInherit < WriteableA
properties (Access=private)
a
end
end
然而,实例化后p = PrivateTestInherit;
时,命令p.inheritWrite(4)
会导致相同的错误消息作为前:“设置‘PrivateTestInherit’类的‘a’属性是不允许的。”
鉴于这种情况,怎么可能一概而论操纵在Matlab私人性质,或者是有可能的代码?