如何知道何时使用括号

Ame*_*ina 2 emacs elisp

我正在阅读Emacs Lisp中的编程简介,我看到以下内容:

此代码有效:

(message "The name of this buffer is: %s." (buffer-name))
Run Code Online (Sandbox Code Playgroud)

而这一次失败了:

(message "The name of this buffer is: %s." buffer-name)
Run Code Online (Sandbox Code Playgroud)

但是,此代码有效:

(message "The value of fill-column is %d." fill-column)
Run Code Online (Sandbox Code Playgroud)

而这一次失败了:

(message "The value of fill-column is %d." (fill-column))
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么?buffer-name和之间有什么区别fill-column?我怎么知道何时使用括号?

Boz*_*sov 5

简单地说 - buffer-name是一个函数(返回一个字符串)并且fill-column是一个变量(计算结果为整数).

所有Lisp方言中的函数调用都应该用括号括起来.

要在Emacs中查看有关功能的详细信息,请按C-h f function-name RET.要在Emacs中查看有关变量的详细信息,请按C-h v variable-name RET.

  • user273158:请注意,elisp符号同时具有值​​槽和功能槽,这意味着给定符号可以(可能)既可以用作变量,也可以用作函数.交互式地,`Ch v`向您显示变量的帮助和`Ch f`为函数提供帮助.非交互式,函数`boundp`和`fboundp`告诉你是否填充了给定符号的值和函数槽. (2认同)