N° |
Fonction |
Catégorie |
Version |
BIN 03 |
BiN_Eval |
Gestion de Fonction
|
1.0 - Janvier 2007 |
Description
But
|
Evalue tout type de symbole.
|
Prototype
|
(BiN_Eval Expr)
|
Argument
|
Expr - L'expression à évaluer - Symbole -
|
Retours
|
Valeur du symbole
|
Var. globales
|
Néant
|
Description
|
Retourne le résultat de l’évaluation d’un symbole.
Contrairement à Eval, BiN_Eval fonctionne également avec des listes
|
Notes
|
Particulièrement utile pour l’extraction de listes associatives dont on ignore
le nombre d’éléments dans la liste.
|
Exemples
|
Commande: (setq Symb2 '(11 22))
retourne (11 22)
Commande: (eval Symb2)
retourne erreur: mauvaise fonction
Commande: (BiN_Eval Symb2)
retourne (11 22)
Autre exemple :
Commande: !v1 retourne
((-1 . ) (0 . "INSERT")
(5 . "14B") (100 . "AcDbEntity") (67 . 0) (8 . "MUREXT")
(100 . "AcDbBlockReference") (2 . "B1") (10 231.85 170.802
0.0) (41 . 2) (42 . 3) (43 .1.0) (50 . 0.0) (70 . 0)
(71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))
Commande: (eval (cdr (assoc 41 v1))) retourne 2
Commande: (eval (cdr (assoc 10 v1)))
retourne erreur: mauvaise fonction
Commande: (BiN_Eval(cdr (assoc 10 v1)))
retourne (231.85 170.802 0.0)
|
La fonction
1- (defun Eval2 (*Expr)
2- (cond
3- ((or (eq (type *Expr) 'sym)
4- (and (listp *Expr)
5- (eq (type (car *Expr)) 'sym)
6- )
7- )
8- (eval *Expr)
9- ) ; fin 1ère condition
10- (T *Expr)
11- ) ; fin condition
12- )
Ligne 2 : Condition
Ligne 3 : si *Expr est un symbole,
Ligne 4 : ou si *Expr est une liste
Ligne 5 : et que le 1er élément de la liste soit un symbole,
Ligne 8 : alors évalue l’expression
Ligne 10 : dans tous les autres cas, retourne l’expression
Eq : Vérifie si 2 expressions sont identiques. Ici si le type de *Expr est “ sym ”.
Type : retourne le type de l’argument *Expr. Ici, vérifie si c’est un symbole (ou variable).
Listp : Retourne T si *Expr est une liste, nil dans les autres cas.
Car : Renvoie le premier élément d'une liste.
Eval : Renvoie le résultat de l'évaluation de *Expr.