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まだ 1 つしかありません。

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れ、その逆も同様です (つまり、データはバックグラウンドで 1 回だけ保存されます)。

ハンドル クラスと値クラスとの違いについては、Matlab のドキュメントがあります。

于 2012-08-28T22:40:55.680 に答える