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]

尽管有参数向量,为什么需要 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 回答