我想要一个 Clojure 中的函数文字,它可以接受任意数量的参数,但实际上并不使用它们。所以我发现了%&
('rest arg' for function literal)和#_
('discard' reader macro)。
但他们如何协同工作让我感到惊讶:
=> (macroexpand `#(... #_ %&))
(fn* [& rest__125459__125460__auto__] (...))
这看起来像我想要的(并且最终似乎可以工作),但是丢弃宏应该如何工作?医生说:
#_ 后面的形式被读者完全跳过。
但显然这里被忽略的%&
形式有一个副作用,那就是它会影响函数文字 args 列表。我应该依赖这种行为还是它看起来更像一个错误?