2009-02-23 22 views

Respuesta

209

Uso de la función de class

>> b = 2 
b = 
    2 
>> a = 'Hi' 
a = 
Hi 
>> class(b) 
ans = 
double 
>> class(a) 
ans = 
char 
61

class() función es el equivalente de typeof()

También puede utilizar isa() para comprobar si una variable es de un tipo particular. Si quieres ser aún más específico, puede utilizar ischar(), isfloat(), iscell(), etc.

23

Tenga cuidado al usar la función isa. Esto será cierto si su objeto es del tipo especificado o una de sus subclases. Debe usar strcmp con la función class para probar si el objeto es específicamente de ese tipo y no una subclase.

38

Otra función relacionada es whos. Enumerará todo tipo de información (dimensiones, tamaño de bytes, tipo) para las variables en un espacio de trabajo dado.

>> a = [0 0 7]; 
>> whos a 
    Name  Size   Bytes Class  Attributes 

    a   1x3    24 double    

>> b = 'James Bond'; 
>> whos b 
    Name  Size   Bytes Class Attributes 

    b   1x10    20 char 
+1

La función [WHO] (http://www.mathworks.de/de/help/matlab/ref/who.html) no muestra el tamaño de las variables. Por eso, es mucho más rápido si su espacio de trabajo está lleno de gente. – JaBe

3

Puesto que nadie lo mencionó, MATLAB también tiene la función metaclass, que devuelve un objeto con varios bits de información sobre la entidad pasado-in. Estos objetos meta.class pueden ser útiles para las pruebas de herencia (a través de operadores de comparación comunes).

Por ejemplo:

>> metaclass(magic(1)) 

ans = 

    class with properties: 

        Name: 'double' 
       Description: '' 
     DetailedDescription: '' 
        Hidden: 0 
        Sealed: 0 
       Abstract: 0 
       Enumeration: 0 
      ConstructOnLoad: 0 
     HandleCompatible: 0 
      InferiorClasses: {0×1 cell} 
     ContainingPackage: [0×0 meta.package] 
    RestrictsSubclassing: 0 
      PropertyList: [0×1 meta.property] 
       MethodList: [272×1 meta.method] 
       EventList: [0×1 meta.event] 
    EnumerationMemberList: [0×1 meta.EnumeratedValue] 
      SuperclassList: [0×1 meta.class] 

>> ?containers.Map <= ?handle 

ans = 

    logical 

    1 

Podemos ver que class(someObj) es equivalente al campo del resultado de metaclass(someObj)Name.

Cuestiones relacionadas