在Clojure中应用plus函数

在Clojure中应用plus函数,clojure,apply,Clojure,Apply,知道为什么吗 (+ nil ) ;-> returns nil (apply + nil) ;-> return 0 ? 多谢各位 这两种情况是不同的 在+nil的情况下,nil参数代替数字。在apply+nil的情况下,nil代替数字列表 相当于 user> (+ nil) nil 使用apply将是 user> (apply + '(nil)) nil 返回相同的结果 另一方面,通过调用apply+nil,您正在一个空列表上调用+,换句话说,在没有参数的情况下

知道为什么吗

(+ nil ) ;-> returns nil

(apply + nil) ;-> return 0 ?
多谢各位


这两种情况是不同的

在+nil的情况下,nil参数代替数字。在apply+nil的情况下,nil代替数字列表

相当于

user> (+ nil)
nil
使用apply将是

user> (apply + '(nil))
nil
返回相同的结果

另一方面,通过调用apply+nil,您正在一个空列表上调用+,换句话说,在没有参数的情况下调用+,返回0。以下各项均相当:

user> (+)
0    
user> (apply + nil)
0
user> (apply + '())
0

这两种情况是不同的

在+nil的情况下,nil参数代替数字。在apply+nil的情况下,nil代替数字列表

相当于

user> (+ nil)
nil
使用apply将是

user> (apply + '(nil))
nil
返回相同的结果

另一方面,通过调用apply+nil,您正在一个空列表上调用+,换句话说,在没有参数的情况下调用+,返回0。以下各项均相当:

user> (+)
0    
user> (apply + nil)
0
user> (apply + '())
0
apply+nil表示不使用等同于+的参数

apply+nil表示不使用等同于+的参数

FWIW apply+'nil返回nilFWIW apply+'nil返回nil