まず第一に、あなたは
validParam = isa(x,'Foo') || isempty(x);
で私たちの状態を確認することができますが、最良の方法は、静的メソッドempty
使用して空のクラスを作成することになります。
e = Foo.empty(0);
isa(x,'Foo')
を、結果があります:
ISA(Foo.empty(0)、 'フー')
の
ANS =ところで
1
、これはまた別の場合に便利です - あなたは動的かつFoo
オブジェクトの配列に成長するとします。セル配列を使用できますが、型の安全性が失われます。代わりにFoo.empty()
を作成します。
しかし、この方法を使用する際の洞察があります。継承を処理するには十分スマートではありません。
Bar
をFoo
から継承するクラスとしましょう。
classdef Bar < Foo
end
そして、あなたはFoo
オブジェクトの新しい配列を割り当て:プロパティを持たない
x = Foo.empty(0)
X =
0x0の空のFoo。
方法
その後Bar
を追加しよう:
x(end+1) = Bar()
??? BarからFooへの変換で次のエラーが発生しました: ==> Fooを使用しているエラー 入力引数が多すぎます。
この場合、唯一の回避策はセルアレイを使用することです。
編集(1): Matlabの継承を処理するためにspecial classを追加したようだ:
説明
matlab.mixin.Heterogeneousが提供する抽象クラスであります異種アレイの形成のために をサポートする。異種配列は、特定のクラスが異なる オブジェクトの配列ですが、すべて から派生したもの、またはルートクラスのインスタンスです。ルートクラスはmatlab.mixin.Heterogeneousから直接 を派生します。