TYPE

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

 


Haut de page

retour au menu CONVERSIONS


4 décembre 2017
mise à jour le 05 avril 2018,
mise à jour le 19 avril 2018