使用局部特殊变量



为了方便原型设计,我依赖于许多全局变量,这些变量在整个代码中大量使用。但是现在我想让其中一些本地化(但动态)。在本地special而不是全局声明它们是否有任何重大缺点(例如,效率等)?

特殊变量的不受欢迎的特性包括:

  • 缺乏参考透明度

这使得对代码进行功能推理变得更加困难。这意味着您的函数使用语法等效的调用产生不同的结果。

  • 引入错误

如果在代码中的某处(例如,在系统函数中)定义了词法变量,则会覆盖它并导致错误。

  • 混乱

特殊(动态)装订不受欢迎,会让不熟悉它的读者感到困惑。

  • 必要

只需使用词法绑定,甚至是回溯宏即可。

更多信息:

Anaphoric macros 参见 Doug Hoyte 的 Let Over Lambda,或 Paul Graham 的回音宏。

LiSP(Lisp in Small Pieces)有一个关于绑定和动态绑定的部分

Elisp 默认有动态绑定,长时间强制动态绑定

许多早期的Lisp都有动态绑定,但放弃了它。

相关内容

  • 没有找到相关文章

最新更新