3

私は2つのクラスを持っています:

classdef Car
    properties 
        make;
    end
    methods
        function obj=Car(MyMake)
            obj.make=MyMake;
        end
    end
end

classdef Engine
    properties
        power;
    end
    methods
        function obj=Engine(bhp)
            obj.power=bhp;
        end
    end
end

Car クラス内に Engine クラスをネストするにはどうすればよいですか?

私の考えは、Honda.Engine.Valve.getDiameter()

Python では、インデントするだけで済みます。ここで何をすればよいかわかりません。

4

1 に答える 1

1

Matlab でクラスをネストできるとは思えません。ただし、通常のクラスを使用し、「ネストされたクラス」を「包含クラス」のプロパティとして割り当てることで、目的の結果を (多かれ少なかれ) 達成することができます。

例えば:

classdef Nested
    methods
        function this=Nested()
            % Yep.
        end
    end
end

classdef Box
    properties
        nested
    end
    methods
        function this=Box()
            this.nested = Nested();
        end
    end
end

これにより、「ネストされた」クラスは「含む」クラスのプロパティにアクセスできなくなりますが、説明したのと同じネストされたアクセスを提供できます。

詳細については、http://www.mathworks.com/help/matlab/matlab_oop/ Saving-class-files.htmlを参照してください。たとえば、このページには次のように記載されています。

MATLAB® パス上のフォルダーに、自己完結型のクラス定義ファイルを 1 つ作成します。ファイルの名前は、クラス (およびコンストラクター) 名と一致し、.m 拡張子が必要です。このファイルでクラス全体を定義します。

したがって、ネストされたクラスは、Matlab パス上の独自のファイルに含まれていないため、この構文に違反します。

これまで Matlab パッケージを使用したことはありませんが、パッケージを使用して特定の構成と機能を解決できる場合があります。http://www.mathworks.com/help/matlab/matlab_oop/scoping-classes-with-packages.htmlを参照してください。

幸運を!

于 2013-09-01T00:02:43.823 に答える