MatLab运算符重载

时间:2012-08-28 20:48:11

标签: function matlab object overloading

  

可能重复:
  How do properties work in Object Oriented MATLAB?

我一直在使用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仍然只有一个节点。

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是从handle类派生,即使用

之类的东西
classdef YourClass < handle
    function plotData(obj)
        ... modify the obj here ...
    end
end

但是,如果您复制实例,即如果您执行

,这也会产生影响
a = YourClass(...);
b = a;

然后ba别名,每当您更改a时,您也会修改b和副 反之亦然(意味着数据仅在后台存储一次)。

句柄类有Matlab documentation,值类有差别。