clojure - Clojurescript 中的可选 "call-back"参数是否不受欢迎?

标签 clojure clojurescript

当您在 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/

相关文章:

java - 让 clojure 生成一个像构建器模式一样使用的 java 类

emacs - 如何编写 emacs lisp 代码来添加新的突出显示模式?

clojure - ClojureScript 中的 getElementsByClassName?

clojurescript - 在高级模式下编译 clojurescript 和 angularjs

clojure - clojure/clojurescript 中的私有(private) def

clojure - 如何从多方法中提取共享逻辑?

java - 将 native JNI 共享库与 Clojure 库捆绑在一起

java - Clojure、Spring、Tomcat集成时的类加载过程

javascript - 如何在 clojure Hiccup 中嵌入 javascript?

clojure - 使用 core.async 等待 n 个 channel