common-lisp
見積もり
サーチ…
構文
- (クォートオブジェクト) - >オブジェクト
備考
彼ら自身が評価してから引用する必要のないオブジェクト(キーワードシンボルなど)がいくつかあります。
簡単な見積もりの例
見積もりは、その引数の評価を妨げる特殊な演算子です。それは評価されていないその引数を返します。
CL-USER> (quote a)
A
CL-USER> (let ((a 3))
(quote a))
A
'は特殊演算子QUOTEのエイリアスです
表記'thing
は(quote thing)
と同じです。
読者は拡張を行います:
> (read-from-string "'a")
(QUOTE A)
引用は、それ以上の評価を防止するために使用されます。クォートされたオブジェクトはそれ自身に評価されます。
> 'a
A
> (eval '+ 1 2)
3
引用されたオブジェクトが破壊的に変更された場合、その結果は未定義です!
クォートされたオブジェクトに対する破壊的な操作は避けてください。引用符付きオブジェクトはリテラルオブジェクトです。それらはおそらく何らかの形でコードに埋め込まれています。 Common Lispの標準では、これがどのように動作し、修正の影響は不明ですが、共有データの変更、書き込み保護されたデータの変更、意図しない副作用の作成などの望ましくない結果を招く可能性があります。
(delete 5 '(1 2 3 4 5))
見積もりと自己評価のオブジェクト
多くのデータ型は、評価されるので引用符で囲む必要はないことに注意してください。 QUOTE
は、Lispフォームとしての評価を防ぐために、シンボルやリストに特に便利です。
評価を防ぐために引用符で囲む必要のない他のデータ型の例:文字列、数字、文字、CLOSオブジェクト、...
ここでは文字列の例を示します。評価結果は、ソースで引用されているかどうかにかかわらず、文字列です。
> (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")
したがって、オブジェクトの引用はオプションです。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow