How to check if an object is from a certain class object?

218 visualizaciones (últimos 30 días)
Limanan Nursalim
Limanan Nursalim el 24 de Abr. de 2018
Comentada: Steven Lord el 25 de Jun. de 2020
I want to check if an item is actually a box, so here is a box:
classdef Box
properties
u
v
n
end
methods
%%constructor
function obj = Box(u,v)
if nargin == 0
error('insert parameters u and v');
end
if nargin == 2 && isvector(u) && isvector(v)
if length(u) ~= length(v)
error('length of u unequals length of v')
end
for i = 1:length(u)
if u(i) == v(i)
error('%s th component of input are the same', i)
end
end
obj.u = u;
obj.v = v;
obj.n = length(u);
return;
end
end
end
end
and then I used
u = zeros(3,1); v = ones(3,1); a = Box(u,v)
isa(a,Box)
but isa(object,Classobject) is somehow function calling constructor of the class object, and returns the error from which nargin == 0. How do I properly check if object a is a box?
  2 comentarios
Al in St. Louis
Al in St. Louis el 25 de Jun. de 2020
This bites me each time I go to use it! (I only use it once every two to three years.)

Iniciar sesión para comentar.

Respuestas (1)

Sayyed Ahmad
Sayyed Ahmad el 25 de Jun. de 2020
try this:
isequal(class(a),'Box')
ans =
1
  1 comentario
Steven Lord
Steven Lord el 25 de Jun. de 2020
That would work in this particular example, but it wouldn't work with subclasses. Let's take two classes:
classdef Animal
% Some general methods and properties: Move, numberOfLegs, etc.
end
and
classdef Dog < Animal
% Some specific methods and properties: Bark, breed (property), etc.
% This also inherits Move and numberOfLegs from Animal
end
If we create a Dog object, is it an Animal?
D = Dog();
isa(D, 'Animal') % true
isequal(class(D), 'Animal') % false

Iniciar sesión para comentar.

Categorías

Más información sobre Animation en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by