2009-02-23 9 views

Répondre

209

Utilisez la fonction class

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

fonction class() est l'équivalent de typeof()

Vous pouvez également utiliser isa() pour vérifier si une variable est d'un type particulier. Si vous voulez être encore plus précis, vous pouvez utiliser ischar(), isfloat(), iscell(), etc.

23

Soyez prudent lorsque vous utilisez la fonction isa. Cela sera vrai si votre objet est du type spécifié ou l'une de ses sous-classes. Vous devez utiliser strcmp avec la fonction class pour tester si l'objet est spécifiquement ce type et non une sous-classe.

38

Une autre fonction connexe est whos. Il énumérera toutes sortes d'informations (dimensions, taille d'octet, type) pour les variables dans un espace de travail donné.

>> 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 fonction [WHO] (http://www.mathworks.de/de/help/matlab/ref/who.html) ne répertorie pas la taille des variables. Pour cette raison, il est beaucoup plus rapide si votre espace de travail est bondé. – JaBe

3

Comme personne l'a mentionné, Matlab a également la fonction metaclass, qui retourne un objet avec différents éléments d'information sur l'entité passée en. Ces objets meta.class peuvent être utiles pour les tests d'héritage (via des opérateurs de comparaison communs).

Par exemple:

>> 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 

Nous pouvons voir que class(someObj) est équivalent au champ Name du résultat de metaclass(someObj).

Questions connexes