En primer lugar, puede consultar nuestras condiciones, con
validParam = isa(x,'Foo') || isempty(x);
Sin embargo, la mejor manera será la creación de una clase vacía utilizando el método estático empty
:
e = Foo.empty(0);
isa(x,'Foo')
Y el resultado es :
isa (Foo.empty (0), 'Foo')
ans =
1
Por cierto, esto también es útil para otro caso - Supongamos que desea crecer de forma dinámica y variedad de objetos Foo
. Puede usar una matriz de celdas, pero luego pierde el tipo de seguridad. En su lugar, cree Foo.empty()
.
Sin embargo, hay un caveeat en el uso de este método. No es lo suficientemente inteligente como para manejar la herencia -
Deje Bar
ser una clase que hereda de Foo
.
classdef Bar < Foo
end
Y se puede asignar un nuevo conjunto de objetos Foo
:
x = Foo.empty(0)
x =
0x0 vacío Foo sin propiedades.
Métodos
A continuación, intente añadir Bar
:
x(end+1) = Bar()
??? Se produjo el siguiente error al pasar de Bar a Foo: Error al usar ==> Foo Demasiados argumentos de entrada.
Así que la única solución para este caso es usar la matriz de celdas.
Editar (1): Parece que Matlab han añadido un special class con el fin de manejar la herencia:
Descripción
matlab.mixin.Heterogeneous es una clase abstracta que proporciona soporte para la formación de matrices heterogéneas. Una matriz heterogénea es una matriz de objetos que difieren en su clase específica, pero todos son derivados de o son instancias de una clase raíz. La clase raíz deriva directamente de matlab.mixin.Heterogeneous.