Przede wszystkim, można sprawdzić naszą sytuację z
validParam = isa(x,'Foo') || isempty(x);
Jednak najlepszym sposobem będzie stworzenie pustej klasie za pomocą metody statycznej empty
:
e = Foo.empty(0);
isa(x,'Foo')
a wynik jest :
ISA (Foo.empty (0), "foo)
ans =
1
Nawiasem mówiąc, jest to również przydatne do innej sprawy - Załóżmy, że chcemy dynamicznie rozwijać i tablicą Foo
obiektów. Możesz użyć tablicy komórek, ale stracisz bezpieczeństwo typu. Zamiast tego utwórz Foo.empty()
.
Niemniej jednak, w użyciu tej metody jest grot. To nie jest na tyle silny, aby obsłużyć dziedziczenie -
Let Bar
być klasa, która dziedziczy z Foo
.
classdef Bar < Foo
end
I przydzielić nową tablicę Foo
obiektów:
x = Foo.empty(0)
x =
0x0 pusty Foo bez właściwości.
Metody
Następnie spróbuj dodać Bar
:
x(end+1) = Bar()
??? Wystąpił następujący błąd podczas konwersji z paska na Foo: Błąd przy użyciu ==> Foo Zbyt wiele argumentów wejściowych.
Jedynym sposobem obejścia tego przypadku jest użycie macierzy komórek.
Edit (1): Wydaje się, że Matlab dodali special class aby obsłużyć dziedziczenie:
Opis
matlab.mixin.Heterogeneous jest klasą abstrakcyjną, która zapewnia wsparcie dla tworzenia heterogenicznych tablic. Szereg heterogeniczny to tablica obiektów, które różnią się w swojej klasie, ale wszystkie pochodzą od lub są instancjami klasy głównej. Klasa główna pochodzi od bezpośrednio z matlab.mixin.Heterogenous.