作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我安装的一些 elisp 函数会生成警告:
`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.
flet
会不会很危险?与
cl-flet
?
最佳答案
flet
与 cl-flet
中的任何一个都不相同或 cl-letf
.
它更危险(也许更强大)。这就是它被弃用的原因。
由于它不同(动态绑定(bind)函数名),您必须考虑
如果适合将其替换为 cl-flet
.flet
时的小例子不能替换为 cl-flet
(defun adder (a b)
(+ a b))
(defun add-bunch (&rest lst)
(reduce #'adder lst))
(add-bunch 1 2 3 4)
;; 10
(flet ((adder (a b) (* a b)))
(add-bunch 1 2 3 4))
;; 24
(cl-flet ((adder (a b) (* a b)))
(add-bunch 1 2 3 4))
;; 10
cl-flet
进行词法绑定(bind),所以
adder
的行为没有改变,
flet
进行动态绑定(bind),这使得
add-bunch
暂时产生一个阶乘。
关于emacs - 应该将 `flet` 替换为 `cl-flet` 还是 `cl-letf` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18895605/
我安装的一些 elisp 函数会生成警告: `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'. 如
我是一名优秀的程序员,十分优秀!