我有一个已知变量列表和带有 nil 参数列表的相应函数,在它内部它使用已知的非参数(或全局)变量。
例如
(defun funA ()
(message "%s" varA))
(defun funB ()
(message "%s" varB))
...
(setq alist
'((varA . funA)
(varB . funB)
...
))
alist 中的类似元素可以动态添加/删除。
我想在另一个函数中运行所有这些函数,其中已知变量的值以 LET 形式动态分配。
(defun call-each-fun-of-alist ()
(dolist (e alist)
(let (( (car e) (read-from-minibuffer "value: ") ))
(funcall (cdr e)))))
(是的,它会抛出错误,但我想要类似的东西,可能没有 EVAL)
对于 alist 的已知元素(就像我首先可以做的那样
(let ((varA (read-from-minibuffer "value: ")))
(funcall (cdr (assoc 'varA alist))))
但是 alist 是动态更新的,我要运行 alist 中的所有函数,相应变量的值将动态出现。
请让我知道如何定义
call-each-fun-of-alist
(不一定,但没有在 call-each-fun-of-alist 中调用 EVAL,如果没有 EVAL 是不可能的,我也想知道它。)