1
 (defmacro switch [choices choice] '(do (choices choice)))
 (macroexpand-1 '(switch {1 (print 1) 2 (print 2)} (+ 1 1)))

 gives: (do (choices choice))

マクロを学ぶためだけに、スイッチケースをエミュレートしたいと思いました。ここでは、ケースをキーとして、コードを値として実行するディクショナリを指定します。

(+ 1 1) を 2 として評価し、コードを do で実行するためのキーとして使用したかったのです。

ただし、展開されたマクロは、選択肢と選択肢の両方を解決しないコードを提供します。

選択肢と選択肢を引用解除しようとしましたが、うまくいきません。ここで何が欠けていますか?

4

1 に答える 1