4

をラップするヘルパー関数を定義しようとしていますclojure.test/deftest。これが私の一般的な考えです:

(defn test-wrapper
  [name & body]
  (deftest (symbol (clojure.string/replace name #"\W" "-")) body)))

ただし、 の最初の引数deftestは未評価であるため、これはフォームでありシンボルではないため、例外がスローされます。フォームを最初に評価するように強制する方法はありますか?

4

2 に答える 2

4

(あなたが書いていない) マクロにその引数を評価させる方法はありません。

test-wrapperやりたいことを実行する最善の方法は、それをマクロ自体に変換することです。symbol次に、それ自体への呼び出しを評価し、呼び出しdeftestの結果をsymbol最初の引数として への呼び出しに展開できます。

于 2012-12-21T18:48:01.103 に答える