1

私には機能があります

(defn hi [a] '[a 2])

値 a を取り、その値を引用符で囲まれたベクトルに挿入し、ベクトルを返す必要があります。

したがって、呼び出し(hi :abc)は を返す必要があり[:abc 2]ます。
注意すべき重要なことは、内部ベクトルが引用符で囲まれていることです。
どうすればいいですか?

4

2 に答える 2

1

これは次のことに役立ちます。

user=> (defn hi [a] [a '2])
#'user/hi
user=> (hi :abc)
[:abc 2]
于 2013-01-04T10:29:08.497 に答える
0

私があなたを正しく理解していれば、未定義のシンボルを関数に渡し、そのシンボルを含むベクトルを取得できるようにしたいと考えています (他のものが追加されています)。

関数に渡す前にシンボルを引用すると、関数内で特別なことをする必要はありません。

user=> (defn hi [a] [a 2])
user=> (= (hi '?ab) '[?ab 2])
true

シンボルをクォートしたくない場合 (たとえば、データ型クエリ構造の慣用的なオーサリングを有効にするために DSL を作成している場合) は、マクロを使用する必要があります。名前空間。次のようなものを試すことができます:

user=> (defmacro hi2 [a] `(quote [~a 2]))
user=> (= (hi2 ?ab) '[?ab 2])
true
于 2013-01-04T16:17:40.507 に答える