8

私はMATLABでクラスを作成しており、オブジェクトの経験はほとんどありませんが、クラスメソッドを使用してクラスプロパティを設定できるはずです。これはMATLABで可能ですか?

classdef foo
    properties
        changeMe 
    end

    methods
        function go()
          (THIS OBJECT).changeMe = 1;
        end
    end
end

f = foo;
f.go;


t.changeMe;
ans = 1
4

1 に答える 1

11

はい、これは可能です。値オブジェクトを作成する場合、プロパティを変更するためにメソッドはオブジェクトを返す必要があることに注意してください(値オブジェクトは値によって渡されるため)。ハンドルオブジェクト(classdef foo<handle)を作成すると、オブジェクトは参照によって渡されます。

classdef foo
    properties
        changeMe = 0;
    end

    methods
        function self = go(self)
          self.changeMe = 1;
        end
    end
end

前述のように、値オブジェクトで設定メソッドを呼び出すと、変更されたオブジェクトが返されます。オブジェクトを変更する場合は、出力をオブジェクトにコピーして戻す必要があります。

f = foo;
f.changeMe
ans =
   0

f = f.go;

f.changeMe
ans =
   1
于 2011-03-16T03:18:39.897 に答える