5

Google Common Lisp 样式指南的“全局变量和常量”部分中指出:

“Common Lisp 没有全局词法变量,因此使用命名约定来确保动态绑定的全局变量的名称永远不会与局部变量重叠。

可以使用不同名称的全局变量和DEFINE-SYMBOL-MACRO来伪造全局词法变量。你不应该使用这个技巧,除非你首先发布一个将它抽象出来的库。”

请有人帮我理解最后一句话的意思。

4

1 回答 1

7

最后一句话,

你不应该使用这个技巧,除非你首先发布一个将它抽象出来的库。

意味着如果你做了一些模拟全局词法变量的事情,那么这个模拟的实现对用户来说应该是不明显的。例如,您可以使用某种方案使用 来模拟define-symbol-macro全局词汇,但如果这样做,它应该对用户是透明的。有关“将其抽象出来的库”的示例, 请参阅 Ron Garret 的GLOBALS — 正确完成的全局变量。</p>

于 2013-06-20T23:24:27.690 回答