2

私は MATLAB が初めてで、このオブジェクトのプロパティを変更するクラスのメソッドを書きたいと思っています。

classdef Foo

  properties
    a = 6;
  end
  methods
    function obj = Foo()
    end

    function change(obj,bar)
      obj.a = bar
    end
  end
end




foo = Foo()

foo.change(7) //here I am trying to change the property to 7

プロパティはまだ 6 であることがわかります。

4

1 に答える 1

3

MATLAB は、値クラスハンドル クラスを区別します。値クラスのインスタンスは代入時に暗黙的にコピーされます (したがって、通常の MATLAB 行列のように動作します)。ハンドル クラスのインスタンスはそうではありません (したがって、他の OOP 言語のインスタンスのように動作します)。

したがって、値クラスの変更されたオブジェクトを返す必要があります。

classdef ValueClass
    properties
        a = 6;
    end
    methods
        function this = change(this, v)
            this.a = v;
        end
   end
end

次のように呼び出します。

value = ValueClass();
value = value.change(23);
value.a

または、クラスからクラスを派生させることもできますhandle

classdef HandleClass < handle
    properties
        a = 6;
    end
    methods
        function change(this, v)
            this.a = v;
        end
   end
end

そして、次のように呼び出します。

h = HandleClass();
h.change(23);
h.a

詳細については、MATLAB ドキュメントを参照してください。

于 2013-03-08T09:00:33.270 に答える