2

Matlabには、2つのクラスがあります

classdef A < matlab.mixin.Heterogeneous
    properties
        a;
    end
    methods
        function obj = A(varargin)
           obj.a = 3;
        end
    end
end

classdef B < A
    properties
        b;
    end
    methods
        function obj = B(varargin)
            obj = obj@A(varargin);
            obj.b = 4;
        end
    end
end

次に、長さ 2 の type の配列を初期化しようとしますB

>> objarray(2) = B

objarray = 

  1x2 heterogeneous A (A, B)

  Properties:
    a

  Methods, Superclasses

なぜMatlabはそれをクラス A にすることを主張するのですか? そして、それがクラスのものであるとどのように主張できBますか?

B編集:デバッガーを使用すると、作成時にMatlabがコンストラクターに入らないことは明らかですobjarray(1)

4

1 に答える 1

2

私はこれを自分で試したことはありませんが、後で要素を割り当てるときに配列の最初の要素を埋め戻す方法を定義する、自分で実装/オーバーライドできるmatlab.mixin.Heterogeneousメソッドがあると思います。getDefaultScalarElement詳細については、このドキュメンテーション ページの中ほどを参照してください。

于 2013-09-04T15:28:00.597 に答える