0

可能重复:
属性如何在面向对象的 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仍然只有一个节点。

4

1 回答 1

1

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

classdef YourClass < handle
    function plotData(obj)
        ... modify the obj here ...
    end
end

但是,这也有影响,如果您复制实例,即如果您执行

a = YourClass(...);
b = a;

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

有关于句柄类和值类的区别的Matlab 文档。

于 2012-08-28T22:40:55.680 回答