3

グーグルと数冊の本を調べましたが、attr-mapに関するドキュメントが見つかりませんでした。

(c/defmacro ^:clojure-special-form throw
  "Throw to the catch for TAG and return VALUE from it.
  Both TAG and VALUE are evalled."
  {:arglists '([TAG VALUE])}
  [tag value]

paramsベクトルにもかかわらずattr-mapが必要なのはなぜですか?また、Clojureのメタデータに関する詳細なリソースを誰かに教えてもらえますか。

4

1 に答える 1

3

その場合は必要ありません。冗長です。

user=> (defmacro ^:clojure-special-form throw   {:arglists '([TAG VALUE])} [tag value]   `(throw (Exception. ~tag ~value)))
#'user/throw
user=> (meta #'throw)
{:macro true, :ns #<Namespace user>, :name throw, :file "NO_SOURCE_PATH", :line 41, :arglists ([TAG VALUE]), :tag :clojure-special-form}

と比べて:

user=> (defmacro ^:clojure-special-form throw [tag value]   `(throw (Exception. ~tag ~value)))
#'user/throw
user=> (meta #'throw)
{:macro true, :ns #<Namespace user>, :name throw, :file "NO_SOURCE_PATH", :line 43, :arglists ([tag value]), :tag :clojure-special-form}

特殊なフォームのこの説明を参照してください。

参照:Clojureの学習:メタデータ

于 2012-12-10T16:32:28.550 に答える