TYPE
de quel type?
Comme cela a été vu précédemment, mais la répétition est une bonne façon de mémoriser, les variables en AutoLisp n'ont pas besoin d'être expressément typées, à savoir il n'est pas nécessaire pour renseigner une variable de "déclarer" le "type" d'élément qu'elle pourra contenir et il est donc possible de ce fait qu'une variable soit renseignée la première fois avec une chaîne de caractères (string) puis au cours du programme se révéler contenir un nombre entier (int) à la suite de diverses manipulations.
Cette "instabilité" de contenu doit être vérifiée de temps en temps, en particulier avant une opération arithmétique, pour être certain de ne pas travailler avec des chaînes de caractères (string) alors qu'on attend des valeurs numériques entiers (int) ou réels (real).
Cette fonction (type) va donc servir à interroger la variable en question pour éventuellement utiliser les fonctions de conversion qui suivent dans ces pages afin d'être certain du "type" de son contenu et travailler avec des valeurs contrôlées et opérationnelles.
Syntaxe | (type item) |
arguments | item, un symbole |
Valeur renvoyée | le type de données du symbole interrogé. voir tableau suivant. |
Exemples :
Définition des variables pour l'exemple :
(setq a "Bonjour") (setq b 1) (setq c 1.23) |
(type a) |
Renvoie STR
(type b) |
Renvoie INT
(type c) |
Renvoie REAL
(type d) |
Renvoie nil
Les différents types rencontrés sont dans ce tableau :
ENAME | Entity name | Nom d'entité |
EXRXSUBR | External ObjectARX application | |
FILE | File descriptor | Descripteur de fichier |
INT | Integer | Nombre entier |
LIST | List | liste |
PAGETB | Function paging table | |
PICKSET | Selection set | Jeu de sélection |
STR | String | Chaîne de caractères |
REAL | Floating-point number | Nombre réel |
SAFEARRAY | Safearray | |
SUBR | Internal AutoLISP functions or functions loaded from compiled (FAS or VLX) files |
|
SYM | Symbol | symbole |
VARIANT | Variant | |
USUBR | User-defined functions loaded from LISP source files | |
VLA-object | ActiveX object | Objet ActiveX |
Lors du contrôle du type (type), si on doit utiliser cette fonction dans un (if) il va être important de "quoter" le type à tester : |
1 2 | (setq var "texte") (type var) |
Renvoie bien : STR
mais :
(= (type var) STR) |
Renvoie nil car STR est considéré comme une variable
pour y pallier il faudra "quoter" STR comme dans les lignes de codes suivantes :
(= (type var) 'STR) ; ou bien en toutes lettres : (= (type var) (quote STR)) |
va renvoyer T ce qui est plus correct.
et :
(type t) |
Renvoie : SYM
4 décembre 2017
mise à jour le 05 avril 2018,
mise à jour le 19 avril 2018