4

重複の可能性:
Matlabオブジェクトのプロパティを変更する方法

C#コードをMatlabに変換しようとしていますが、Matlabでは、C#コードの複雑さを処理できるように、Matlabでは使用していないOOPを使用することにしました。

チュートリアルを見ると、次のコードが思い浮かびます。

classdef Cat
    properties
        meowCount = 0; 
    end
    methods 
        function Meow(C)
            disp('meowww'); 
            C.meowCount = C.meowCount + 1;
        end
    end    
end

結果:

>> c = Cat();
>> c.Meow();
meowww
>> c

c = 

  Cat

  Properties:
     meowCount: 0

  Methods

だから、meowCount変わらない。何が問題ですか?

4

1 に答える 1

8

私が気付いたいくつかの問題:

  • コンストラクターはありません
  • handle基本クラスから派生していません

コンストラクターは厳密には必要ありませんが、より大きなクラスの開発を本当に開始したい場合を知るのに非常に役立ちます。これは、オブジェクトを初期化するために使用されobj、すべてのメソッドに渡されます。selfPythonやC++と非常によく似ていthisます。

だから、あなたの修正されたクラス:

classdef Cat < handle

    properties
        meowCount = 0; 
    end

    methods 

        function obj = Cat()
            % all initializations, calls to base class, etc. here,
        end

        function Meow(obj)
            disp('meowww'); 
            obj.meowCount = obj.meowCount + 1;
        end
    end    
end

デモンストレーション:

>> C = Cat;
>> C.Meow; 
meowww
>> C.meowCount
1
于 2012-08-23T12:09:00.763 に答える