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

时间:2012-10-12 15:17:16

标签: clojure clojurescript

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

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

  

(def x(原子5))

     

(swap!x(fn [] 6))

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

如果它使我的Clojurescript代码更干净,那么使用此功能会被视为不良形式吗?或者,它只是滥用Clojurescript限制?有什么意见吗?

感谢您的想法!

1 个答案:

答案 0 :(得分:9)

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

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


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