Применить плюс функцию в Clojure - PullRequest
1 голос
/ 08 марта 2020

Любая идея, почему

(+ nil ) ;-> returns nil

(apply + nil) ;-> return 0 ?

большое спасибо

enter image description here

Ответы [ 2 ]

6 голосов
/ 08 марта 2020

Два случая различны.

В случае (+ nil) аргумент nil вместо числа. В случае (apply + nil) вместо списка чисел стоит ноль.

Эквивалент

user> (+ nil)
nil

при использовании apply будет

user> (apply + '(nil))
nil

который возвращает тот же результат.

С другой стороны, вызывая (apply + nil), вы вызываете + в пустом списке, другими словами, вызываете + без аргументов, что возвращает 0. все следующие эквивалентны:

user> (+)
0    
user> (apply + nil)
0
user> (apply + '())
0
1 голос
/ 08 марта 2020

(apply + nil) означает «не использовать аргументы», что эквивалентно просто (+).

(+)
=> 0

См. Источник

...