4

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

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

(定义 x(原子 5))

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

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

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

谢谢你的想法!

4

1 回答 1

9

对我来说(fn [_] 6),它看起来非常地道,而且并不比(fn [] 6). 它甚至更具表现力,因为它明确指出该论点被忽略。

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


编辑:顺便说一句,您的示例可以使用不断重写:(swap! x (constantly 6)). constantly创建一个函数,该函数接受任意数量的参数并始终返回传递给constantly.

于 2012-10-12T20:45:25.853 回答