当您在 Clojurescript 中编写高阶函数时,实际上可以省略传入函数的参数。
例如,以下是合法的 Clojurescript 代码但非法的 Clojure 代码:
(def x (atom 5))
(swap! x (fn [] 6))
高阶“交换!” function 需要一个带一个参数的函数,但你可以省略它,程序仍然可以编译/运行。
如果它使我的 Clojurescript 代码更清晰,使用此功能是否会被视为不良形式?或者,这只是滥用 Clojurescript 限制吗?有什么意见吗?
谢谢你的想法!
最佳答案
给我 (fn [_] 6)
看起来非常地道,并不比 (fn [] 6)
更晦涩难懂.它更具表现力,因为它明确指出该参数被忽略。
编写完整(正确)表单的另一个优点是代码的可移植性。
编辑:顺便说一下,您的示例可以不断地重写:(swap! x (constantly 6))
. constantly
创建一个函数,该函数接受任意数量的参数并始终返回传递给 constantly
的参数。 .
关于clojure - Clojurescript 中的可选 "call-back"参数是否不受欢迎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862168/