我试图查看数据与代码替换是如何工作的,当eval
在一个函数中使用类似的东西时,它可以让我传入任何打印命令,如print
princ
etc 和一些文本,并在其输出中使用该命令:
(defun print-test (fn text)
(eval '(fn 'text)))
我尝试了各种方法,但我无法让它运行。我也试过:
(defun print-test (fn text)
(eval ('fn 'text)))
..和其他变体。所以我显然错过了一些东西。我希望能够做到这一点:
(print-test 'princ 'some-text)
我通常会得到一个错误fn is undefined
。但是由于我正在实时评估代码,我认为它可以fn
从我的输入中得到?
我意识到还有其他方法可以做到这一点,比如传入一个实际的函数对象,#'princ
但我很好奇该eval
机制是如何动态生成代码的。