2013-01-13 1 views
2

를 사용할 때 알고, 나는 다음을 참조하는 방법 :괄호에게 내가 <a href="http://www.gnu.org/software/emacs/emacs-lisp-intro/" rel="nofollow">An Introduction to Programming in Emacs Lisp</a>을 읽고있다

이 코드는 작동이 하나가 실패

(message "The name of this buffer is: %s." (buffer-name)) 

하면서 그러나

(message "The name of this buffer is: %s." buffer-name) 

,이 코드는 작동합니다 :

(message "The value of fill-column is %d." fill-column) 

이 실패하는 동안 :

(message "The value of fill-column is %d." (fill-column)) 

내 질문은 왜입니까? buffer-namefill-column의 차이점은 무엇입니까? 괄호 사용시기를 어떻게 알 수 있습니까?

답변

5

간단히 말하자면 - buffer-name은 (문자열을 반환하는) 함수이고 fill-column은 (정수로 평가되는) 변수입니다.

모든 Lisp 방언의 함수 호출은 괄호로 묶어야합니다.

Emacs의 기능에 대한 자세한 내용을 보려면 C-h f function-name RET을 누르십시오. Emacs에서 변수에 대한 자세한 내용을 보려면 C-h v 변수 이름 RET을 누르십시오.

+0

감사합니다. 그것은 많은 의미가 있습니다. 주어진 심볼이 함수, 변수 또는 다른 것인가를 대화식으로 알 수있는 방법이 있습니까? (즉, 'C-x C-e'또는 그와 동등한 명령을 사용하여) –

+1

대화 형 쉘에서 Emacs Lisp을 실험하기 위해'M-x ielm'을 사용할 것을 제안합니다. –

+2

user273158 : elisp 기호에는 값 슬롯과 기능 슬롯이 모두 있습니다. 즉, 주어진 기호를 변수 및 함수로 모두 사용할 수 있습니다. 대화식으로,'C-h v'는 변수에 대한 도움말과 함수에 대한 도움말 인'C-h f '를 보여줍니다. 비대 화적으로,'boundp'와'fboundp' 함수는 주어진 심볼에 대한 값과 함수 슬롯이 채워지는지 여부를 알려줍니다. – phils

관련 문제