![]() |
1
12
在给定的词汇范围内,是的。使用FLET或标签。使用FLET定义的任何函数都无法调用在同一词法范围内定义的函数,如果需要(例如,对于一组相互递归的函数的自递归),则需要使用标签。 请注意,FLET和标签都只建立词法隐藏,不应用于隐藏COMMON-LISP包中的函数,也不会动态更改表单建立的词法范围之外调用的函数。 |
![]() |
2
7
本地功能可以通过 FLET and LABELS . |
![]() |
3
7
如果您想使用动态范围重新定义/隐藏现有函数,这是我已经使用了一段时间的宏。
用法:
注意,它依赖于Doug Hoyte的defmacro!宏,可在 Let Over Lambda . 同样是书面的,它是回指(有趣的原语可以在体内找到)。如果你想让它完全卫生,只需将乐趣原语改为,g!有趣的奥利格。 在编写单元测试时,我通常会重新定义函数。在特定单元测试的范围内模拟函数是有帮助的,有时这需要在动态(而不是词汇)范围内完成。 |
![]() |
4
2
您可以像这样模拟FUN的动态绑定:
然后,例如
你会得到:
|
![]() |
ptb · Slime\Emacs comint在启动mpi进程时挂起 7 年前 |
![]() |
Alexandru Popa · SBCL中奇怪的宏扩展错误 7 年前 |
![]() |
MadPhysicist · 公共Lisp未定义分派字符 7 年前 |
![]() |
Jacky · 编辑列表中的每个偶数索引元素 7 年前 |
![]() |
Jorge · 在公共Lisp中初始化计数器变量 7 年前 |
![]() |
Rorschach · cl循环破坏性修改cons单元 7 年前 |
![]() |
Rorschach · 宏在定义时将关键帧视为true 7 年前 |
![]() |
reverload · 空调内部let工作不正常 7 年前 |