Recherche…


Syntaxe

  • (objet citation) -> objet

Remarques

Certains objets (par exemple des symboles de mots-clés) ne doivent pas être cités car ils s’évaluent eux-mêmes.

Exemple de citation simple

Quote est un opérateur spécial qui empêche l'évaluation de son argument. Il renvoie son argument, non évalué.

CL-USER> (quote a)
A

CL-USER> (let ((a 3))
           (quote a))
A

'est un alias pour l'opérateur spécial QUOTE

La 'thing notation est égale à (quote thing) .

Le lecteur fera l'expansion:

> (read-from-string "'a")
(QUOTE A)

Les citations sont utilisées pour empêcher toute évaluation ultérieure. L'objet cité est évalué à lui-même.

> 'a
A

> (eval '+ 1 2)
3

Si les objets cités sont modifiés de manière destructive, les conséquences ne sont pas définies!

Évitez les opérations destructrices sur les objets cités. Les objets cotés sont des objets littéraux. Ils sont peut-être intégrés au code d'une manière ou d'une autre. Comment cela fonctionne et les effets des modifications ne sont pas spécifiés dans le standard Common Lisp, mais cela peut avoir des conséquences indésirables, comme modifier des données partagées, essayer de modifier des données protégées en écriture ou créer des effets secondaires involontaires.

(delete 5 '(1 2 3 4 5))

Citation et auto-évaluation d'objets

Notez que de nombreux types de données n’ont pas besoin d’être cités, car ils s’évaluent eux-mêmes. QUOTE est particulièrement utile pour les symboles et les listes, pour empêcher l'évaluation en tant que formulaires Lisp.

Il n'est pas nécessaire de citer un exemple pour d'autres types de données pour empêcher l'évaluation: chaînes, nombres, caractères, objets CLOS, ...

Voici un exemple pour les chaînes. Les résultats de l'évaluation sont des chaînes, qu'elles soient ou non citées dans la source.

> (let ((some-string-1 "this is a string")
        (some-string-2 '"this is a string with a quote in the source")
        (some-string-3 (quote "this is another string with a quote in the source")))
    (list some-string-1 some-string-2 some-string-3))

("this is a string"
 "this is a string with a quote in the source"
 "this is another string with a quote in the source")

Citer pour les objets est donc facultatif.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow