Clojurescript中的可选"回调"参数是否令人不悦?

drc*_*ode 4 clojure clojurescript

当您在Clojurescript中编写高阶函数时,实际上可以省略传入函数的参数.

例如,以下是合法的Clojurescript代码,但非法的Clojure代码:

(def x(原子5))

(交换!x(fn [] 6))

高阶"交换!" 函数需要一个带一个参数的函数,但你可以省略它,程序仍然可以正常编译/运行.

如果它使我的Clojurescript代码更干净,那么使用这种能力会被认为是不好的形式吗?或者,它只是滥用Clojurescript限制?任何意见?

谢谢你的想法!

Iva*_*lik 9

对我来说,(fn [_] 6)看起来非常惯用,而不是更加晦涩难懂(fn [] 6).它更具表现力,因为它明确指出该论点被忽略了.

编写完整(正确)表单的另一个好处是代码的可移植性.


编辑:顺便说一下你的例子可以不断改写:(swap! x (constantly 6)).constantly创建一个接受任意数量参数的函数,并始终返回传递给的参数constantly.