在 Common Lisp 中,是否可以在一定范围内重新定义已经定义的函数?例如,给定函数 A 调用函数 B。我可以在调用 A 期间临时重新定义 B 吗?
我正在寻找类似于 let 块的东西,但这可以重新定义函数。
在给定的词汇范围内,是的。使用 FLET 或标签。任何使用 FLET 定义的函数都无法调用在同一词法作用域中定义的函数,如果您想要这样做(例如,一组相互递归函数的自递归),您将需要使用 LABELS。
请注意,FLET 和 LABELS 都仅建立词法遮蔽,不应用于遮蔽 COMMON-LISP 包中的函数,并且不会动态更改从表单建立的词法范围之外调用的函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)