【问题标题】:defmethod/ multi : clojure.lang.ArityException: Wrong number of args (2) passed to:defmethod/ multi : clojure.lang.ArityException: 传递给的 args (2) 数量错误:
【发布时间】:2014-06-16 23:24:35
【问题描述】:

我试图运行以下代码,但结果是一个我不明白的错误。请赐教哪一部分是错的?

代码:

(defmulti test_mul
  (fn [x y] (class y)))

(defmethod test_mul String [x y]
  (str x  y " String here"))

(defmethod test_mul java.lang.Number [x y]
  (str x y " Number here"))


(test_mul 3 4)

错误显示:

clojure.lang.ArityException: Wrong number of args (2) passed to:    core$eval6599$fn
AFn.java:437 clojure.lang.AFn.throwArity
AFn.java:43 clojure.lang.AFn.invoke
MultiFn.java:231 clojure.lang.MultiFn.invok

【问题讨论】:

    标签: clojure


    【解决方案1】:

    如果我打开一个新的 repl 并输入您的代码,它运行得非常好,产生以下输出:

    "34 number here"
    

    因此,我怀疑您的 repl 会话中存在导致错误的内容。

    HTH

    干杯

    【讨论】:

    • lighttable 似乎有问题,代码也适用于我的 repl。
    • 我刚刚下载了light table 0.6.6,它在instarepl中运行良好(我不得不提醒自己如何打开instarepl :),我更经常使用夜间代码)
    • 重新定义多方法比重新评估它们更棘手。这在我身上发生过几次,通常是因为我有一个旧定义。
    猜你喜欢
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多