在匿名函数中使用 %

Using % in an anonymous function

我知道给定一个匿名函数我可以使用像 %1 %2 这样的参数,例如

(#(+ %1 %2 %3) 2 4 6)

但是解决一个问题

(true?  (x :a {:a nil :b 2}))

x 可能在哪里

#(nil? (%2 % %))

#(not (%2 % 1))

后面没有数字的 % 是什么意思?

这是 4clojure

上的练习

提前致谢

没有任何数字的 % 总是等同于 %1(即匿名函数的第一个参数)。

来自docs

% is a synonym for %1, %n designates the nth arg (1-based), and %& designates a rest arg.

我看到有人提到(不记得在哪里,但我同意)当匿名函数接受多个参数时,最好将数字包含在 %1 中,因为这样更清楚到 reader.