3

Clojureフォームを文字列に変換する方法はありますか?例:変換:

(and (f 1) (g 3))

に:

"(and (f 1) (g 3))"
4

3 に答える 3

8
=> (defmacro string-it [x] (str x))
#'user/string-it
=> (string-it (+ 1 2))
"(+ 1 2)"
于 2013-02-21T13:20:42.197 に答える
3

あなたはこれを行うことができます:

(str '(and (f 1) (g 3)))

編集

よく知らない場合は、'( "quote")文字はコードをエスケープするリーダーマクロ文字(more)です。つまり、コードが評価されないようにします。

変数を設定することもできます。

(def x '(and (f 1) (g 3)))
(str x)

次に、コードを実行したい場合は、それを評価できます。

于 2013-02-21T13:16:21.827 に答える
3

または、事前にフォームがわからない場合は、

(defmacro to-str [f]
  (str f))

(to-str (and (f 1) (g 3)))

取得し、

"(and (f 1) (g 3))"
于 2013-02-21T13:23:15.973 に答える