在 Clojure 中应用 plus 函数

Sha*_*ang 1 clojure apply

知道为什么

(+ nil ) ;-> returns nil

(apply + nil) ;-> return 0 ?
Run Code Online (Sandbox Code Playgroud)

非常感谢您

在此处输入图片说明

jas*_*jas 6

这两种情况是不同的。

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

相当于

user> (+ nil)
nil
Run Code Online (Sandbox Code Playgroud)

使用申请将是

user> (apply + '(nil))
nil
Run Code Online (Sandbox Code Playgroud)

返回相同的结果。

另一方面,通过调用(apply + nil),您正在调用+一个空列表,换句话说+,不带参数调用,返回 0。以下都是等效的:

user> (+)
0    
user> (apply + nil)
0
user> (apply + '())
0
Run Code Online (Sandbox Code Playgroud)