我使用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}))
有效。
有人请告诉我哪里弄错了?
答案 0 :(得分:0)
好的,因为我需要关闭这个问题,因此我需要回答我自己的问题(没有其他人这样做)。实际上我认为这是苹果酒或苹果的问题。我不知道它在Linux或MacOS上是否有所不同。我正在使用Windows,不知何故连接到Emacs和Visual Studio代码的nRepl只是搞砸了。如果我尝试运行单独的repl,它可以正常工作。