수색…


통사론

  • (quote object) -> 객체

비고

평가할 때 따옴표를 달 필요가없는 일부 개체 (예 : 키워드 기호)가 있습니다.

간단한 견적의 예

따옴표는 해당 인수의 평가를 방해하는 특수 연산자 입니다. 평가되지 않은 인수를 반환합니다.

CL-USER> (quote a)
A

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

'는 특수 연산자 QUOTE의 별명입니다

표기법은 'thing (quote thing) '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