Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure“;套用;在简单和函数中抛出ClassCastException_Clojure - Fatal编程技术网

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)