使用多方法和元数据时,args数量错误

时间:2017-06-27 08:29:58

标签: clojure

我使用multimethod和meta-data有以下代码:

(defrecord Card [id name value])

(defmulti make-card (fn [m] (:source (meta m))))

(defmethod make-card :random [m] (map->Card m))
(def card-info  (with-meta {:id 1} {:source :random}))

我打电话的时候:

(make-card card-info)

它只是抛出“ArityException错误的args(1)传递给:core / eval1299 / fn - 1300 clojure.lang.AFn.throwArity(AFn.java:429)”

另一方面,如果我打电话:

 ((fn [m] (:source (meta m))) (with-meta {:id 1} {:source :random}))

有效。

有人请告诉我哪里弄错了?

1 个答案:

答案 0 :(得分:0)

好的,因为我需要关闭这个问题,因此我需要回答我自己的问题(没有其他人这样做)。实际上我认为这是苹果酒或苹果的问题。我不知道它在Linux或MacOS上是否有所不同。我正在使用Windows,不知何故连接到Emacs和Visual Studio代码的nRepl只是搞砸了。如果我尝试运行单独的repl,它可以正常工作。