代码之家  ›  专栏  ›  技术社区  ›  rusfrompiter

为什么评估列表只返回数字,而在其他情况下返回错误?[副本]

  •  0
  • rusfrompiter  · 技术社区  · 1 年前

    在Clojure REPL中:

    ('+ 1 2) ; 2
    ('+ 1 2 3) ; (err) clojure.lang.ArityException: Wrong number of args (3) passed to: clojure.lang.Symbol
    

    为什么会发生这种情况以及它是如何工作的?我试着检查代码,但我不知道在函数位置调用了什么

    1 回复  |  直到 1 年前
        1
  •  1
  •   cfrick    1 年前

    Clojure符号也是函数,其实现方式如下 get 。所以你在这里的电话是 (get 1 '+ 2) ,这还可以(试着抬头看 '+ 在里面 1 ,无法工作,因此返回的回退 2 ).而arity就是不起作用;只允许使用1-2个参数。