drc*_*ode 4 clojure clojurescript
当您在Clojurescript中编写高阶函数时,实际上可以省略传入函数的参数.
例如,以下是合法的Clojurescript代码,但非法的Clojure代码:
(def x(原子5))
(交换!x(fn [] 6))
高阶"交换!" 函数需要一个带一个参数的函数,但你可以省略它,程序仍然可以正常编译/运行.
如果它使我的Clojurescript代码更干净,那么使用这种能力会被认为是不好的形式吗?或者,它只是滥用Clojurescript限制?任何意见?
谢谢你的想法!
对我来说,(fn [_] 6)看起来非常惯用,而不是更加晦涩难懂(fn [] 6).它更具表现力,因为它明确指出该论点被忽略了.
编写完整(正确)表单的另一个好处是代码的可移植性.
编辑:顺便说一下你的例子可以不断改写:(swap! x (constantly 6)).constantly创建一个接受任意数量参数的函数,并始终返回传递给的参数constantly.