我一直在使用MatLab很长一段时间,但最近才开始使用OOP。
我有一个类是一个简单的链表(它可以是任何真正的东西)。在类中声明了一些方法。方法是否可以修改从中调用这些方法的实例?
instance.plotData()
无法修改实例的任何属性。
我必须返回该函数的实例才能对实例本身产生一些影响:
instance = instance.plotData();
这看起来真的很麻烦。有没有更好的方法来完成任务?
增加:
classdef handleTest < handle
properties
number
end
methods
function addNode(this)
a = length(this);
this(a+1) = handleTest;
end
end
end
如果我打电话:
x = handleTest
x.addNode()
然后x
仍然只有一个节点。
答案 0 :(得分:1)
一种可能的解决方案是从handle
类派生,即使用
classdef YourClass < handle
function plotData(obj)
... modify the obj here ...
end
end
但是,如果您复制实例,即如果您执行
,这也会产生影响a = YourClass(...);
b = a;
然后b
是a
的别名,每当您更改a
时,您也会修改b
和副
反之亦然(意味着数据仅在后台存储一次)。
句柄类有Matlab documentation,值类有差别。