MATLAB a-t-il une fonction/un opérateur qui indique le type d'une variable (similaire à l'opérateur typeof
en JavaScript)?
Utilisez la fonction class
>> b = 2
b =
2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
class()
fonction 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 spécifique, vous pouvez utiliser ischar()
, isfloat()
, iscell()
, etc.
Une autre fonction associée est whos
. Il listera toutes sortes d'informations (dimensions, taille en octets, type) pour les variables d'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
Soyez prudent lorsque vous utilisez la fonction isa
. Cela sera vrai si votre objet est du type spécifié ou une de ses sous-classes. Vous devez utiliser strcmp
avec la fonction class
pour vérifier si l'objet est spécifiquement de ce type et non pas une sous-classe.
Comme personne ne l’a mentionné, MATLAB a également la fonction metaclass
, qui renvoie un objet contenant diverses informations sur l’entité transmise. Ces objets meta.class
peuvent être utiles pour les tests d’héritage (via des opérateurs de comparaison courants).
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)
.
class () fonctionne exactement comme l'opérateur typeof de Javascript.
Pour obtenir plus de détails sur les variables, vous pouvez utiliser la commande whos ou la fonction whos ().
Voici l'exemple de code exécuté sur la fenêtre de commande de MATLAB R2017a.
>> % Define a number
>> num = 67
num =
67
>> % Get type of variable num
>> class(num)
ans =
'double'
>> % Define character vector
>> myName = 'Rishikesh Agrawani'
myName =
'Rishikesh Agrwani'
>> % Check type of myName
>> class(myName)
ans =
'char'
>> % Define a cell array
>> cellArr = {'This ', 'is ', 'a ', 'big chance to learn ', 'MATLAB.'}; % Cell array
>>
>> class(cellArr)
ans =
'cell'
>> % Get more details including type
>> whos num
Name Size Bytes Class Attributes
num 1x1 8 double
>> whos myName
Name Size Bytes Class Attributes
myName 1x17 34 char
>> whos cellArr
Name Size Bytes Class Attributes
cellArr 1x5 634 cell
>> % Another way to use whos i.e using whos(char_vector)
>> whos('cellArr')
Name Size Bytes Class Attributes
cellArr 1x5 634 cell
>> whos('num')
Name Size Bytes Class Attributes
num 1x1 8 double
>> whos('myName')
Name Size Bytes Class Attributes
myName 1x17 34 char
>>