EGAL

EGAL


pour vérifier l'égalité de deux éléments


 

Opérateur Arguments Exemple  Valeur retournée

=

Nombre
ou
Chaîne de caractères
(string)

( = 1 2)

(= 12 12.0)

(="maison" "maison")

(= "maison" "MAISON")

(= "a" 12)

nil

T

T

Nil

Nil

Il est possible de comparer plus de deux éléments mais si un seul des éléments ne respecte pas l'égalité la valeur renvoyée est nil

(= 1 1 1 1) renvoie T,
Tous les arguments sont égaux (valeur parfaitement égale)
(= 1 1 1 1.0001 ) renvoie nil
Car un argument est différent des autres, 1.0001 ne vaut pas 1 exactement, eh oui c'est précis ! un seul qui est différent des autres et c'est nil !

En cas de contrôle d'égalité de chaînes de caractères (string) le logiciel est sensible à la casse, c'est à dire que les majuscules et minuscules ne sont pas considérées comme égales

1
(= "maison" "maison")

Renvoie T, c'est égal, rien à redire

(= "maison" "Maison")

Renvoie nil, les deux chaînes (string) ne sont pas égales à cause de la majuscule en début de la deuxième.

Attention
Dans les opérations de test d'égalité il faut composer avec les faiblesses connues des systèmes informatiques dans la gestion des nombres et en particulier de la notion de virgule flottante, non ce n'est pas une virgule oubliée dans une mare, c'est une façon de coder les nombres.

Par exemple si vous voulez vérifier que 1.0 retranché de 1.1 est égal à 0.10 Autolisp vous renseignera faussement, vérifiez par vous-même  :

Question : Est-ce que 1.1 moins 1.0 égale 0.10 ?

( = ( - 1.1 1.0) 0.10)

Valeur renvoyée nil, donc 1.1 moins 1.0 n'est pas égal à 0.10 pour la machine, plus loin vous trouverez des fonctions pour pallier ce souci, regardez FUZZ

 

Attention :
Cette fonction compare le contenu des listes sans tenir compte de "l'adresse en mémoire", voir la nuance avec la fonction (eq)

 

Exemples avec des listes :

Définition des variables a b et c :

  • a est la liste ( 1 2 3)
  • b prend la valeur de a
  • c est la liste (1 2 3)
(setq a ' ( 1 2 3) b a c ' ( 1 2 3))
(equal a b)

renvoie T

(equal a c)

renvoie T

(equal b c)

renvoie T

 


Haut de page

revenir au menu COMPARAISON


2 juin 2017, mise à jour le 15 décembre 2017