我想写一个函数
第一次调用一定返回 1, 第二次调用一定返回 2 ,
第三次调用一定返回 1 ,第四次调用一定返回 2 … 如此反复
这种函数存在不使用全局变量的实现吗?
我想写一个函数
第一次调用一定返回 1, 第二次调用一定返回 2 ,
第三次调用一定返回 1 ,第四次调用一定返回 2 … 如此反复
这种函数存在不使用全局变量的实现吗?
(let ((x 2))
(defun counter ()
(if (eql 2 x)
(setq x 1)
(setq x 2))))
如果失败的话,记得设置 lexical-binding 的值为 t
闭包
(defun test ()
(let ((r 1))
(lambda ()
(if (= r 1)
(setq r 2)
(setq r 1)))))
(setq inner (test))
(funcall inner)
(funcall inner)
(funcall inner)
可以利用elisp中的bug。
思路神奇。。。
原本想着的全局变量做toggle
函数
现在可以通过这样的函数做
这样不好,还是应该用变量。
生成器: