在Google通用Lisp风格指南的"全局变量和常量"一节中指出:
"Common Lisp没有全局词法变量,因此使用命名约定来确保动态绑定的全局变量的名称永远不会与局部变量重叠。
可以使用不同命名的全局变量和DEFINE-SYMBOL-MACRO来伪造全局词法变量。您不应该使用这个技巧,除非您首先发布了一个将其抽象掉的库。"
谁能帮我理解一下最后这句话的意思?
最后一句,
你不应该使用这个技巧,除非你首先发布了一个将它抽象掉的库。
意味着如果您做一些模拟全局词法变量的事情,那么该模拟的实现对用户来说不应该是明显的。例如,您可以使用使用define-symbol-macro
的某些方案模拟全局词法,但是如果您这样做,它应该对用户是透明的。参考Ron garrett的GLOBALS——正确的全局变量,以获得一个"抽象掉全局变量的库"的例子。