Sök…


Syntax

  • (citat objekt) -> objekt

Anmärkningar

Det finns några objekt (till exempel nyckelordssymboler) som inte behöver anges eftersom de utvärderar för sig själva.

Enkelt citat exempel

Citat är en speciell operatör som förhindrar utvärdering av dess argument. Det returnerar sitt argument, obevärderat.

CL-USER> (quote a)
A

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

'är ett alias för den speciella operatören QUOTE

Notationens 'thing är lika med (quote thing) .

Läsaren kommer att göra utvidgningen:

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

Citat används för att förhindra ytterligare utvärdering. Det citerade objektet utvärderar till sig själv.

> 'a
A

> (eval '+ 1 2)
3

Om citerade föremål ändras destruktivt, definieras konsekvenserna!

Undvik destruktiva åtgärder på citerade objekt. Citerade objekt är bokstavliga objekt. De är eventuellt inbäddade i koden på något sätt. Hur detta fungerar och effekterna av modifieringar är ospecificerade i Common Lisp-standarden, men det kan ha oönskade konsekvenser som att modifiera delad data, försöka ändra skrivskyddad data eller skapa oavsiktliga biverkningar.

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

Citera och självutvärdera objekt

Observera att många datatyper inte behöver citeras, eftersom de utvärderar för sig själva. QUOTE är särskilt användbart för symboler och listor för att förhindra utvärdering som Lisp-former.

Exempel för andra datatyper som inte behövdes citeras för att förhindra utvärdering: strängar, siffror, tecken, CLOS-objekt, ...

Här ett exempel för strängar. Utvärderingsresultaten är strängar, oavsett om de citeras i källan eller inte.

> (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")

Att citera för objekten är således valfritt.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow