Clojure“;套用;在简单和函数中抛出ClassCastException
此函数Clojure“;套用;在简单和函数中抛出ClassCastException,clojure,Clojure,此函数 (defn sum [& args] (apply + args)) 应汇总所有args序列元素并引发异常。 为什么? (也用作本问题中的示例(我不编译) 我在Emacs 24.2 Live with Clojure 1.5.1中使用nrepl,当您使用&args指定函数参数时,这意味着args将包含所有其他函数参数的列表。在本例中,sum将获得其所有参数的列表——但其参数已经是一个列表,因此实际上,sum在这里所做的是 (apply + [[1 2 3]]) 如果您在定义总
(defn sum [& args] (apply + args))
应汇总所有args序列元素并引发异常。
为什么?
(也用作本问题中的示例(我不编译)
我在Emacs 24.2 Live with Clojure 1.5.1中使用nrepl,当您使用
&args
指定函数参数时,这意味着args
将包含所有其他函数参数的列表。在本例中,sum
将获得其所有参数的列表——但其参数已经是一个列表,因此实际上,sum
在这里所做的是
(apply + [[1 2 3]])
如果您在定义
总和
的参数时去掉&
(这样列表就是[args]
),您将得到您想要的。尝试以下方法。在Clojure中,变量参数本身就是列表
(sum 1 2 3)
哦!谢谢:)现在很明显:DGlad需要帮助,欢迎使用Stack Overflow!如果我已经回答了您的问题,您可以通过单击我的答案旁边的复选标记的大纲将其标记为“已接受”:
(sum 1 2 3)