(defmacro switch [choices choice] '(do (choices choice)))
(macroexpand-1 '(switch {1 (print 1) 2 (print 2)} (+ 1 1)))
gives: (do (choices choice))
只是为了学习宏,我想模拟 switch case,我将给出一个字典,其中 case 作为键,代码作为值执行。
我希望 (+ 1 1) 被评估为 2,然后用作让 codede 执行 do 的关键。
然而,扩展宏为我们提供了不能同时解决选择和选择的代码。
我尝试取消引用选择和选择,但不起作用。我在这里想念什么?