clojure - Clojure 中的 def 和 defonce 有什么区别?

标签 clojure functional-programming lisp clojurescript

Clojure 中的 defdefonce 有什么区别?

什么时候使用 def 而不是 defonce 还是相反?

最佳答案

defonce 当变量已经定义时被跳过。

user> (def a 1) ;;=> #'user/a
user> a ;;=> 1
user> (def a 2) ;;=> #'user/a
user> a ;;=> 2
user> (defonce b 1) ;;=> #'user/b
user> b ;;=> 1
user> (defonce b 2) ;;=> nil
user> b ;;=> 1

关于clojure - Clojure 中的 def 和 defonce 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37346984/

相关文章:

scala - 如何使用akka-http设计一个rest api以便于测试?

list - 返回列表数字的阶乘

macros - 我的第一个 Lisp 宏;漏水了吗?

lisp - 使用 SBCL 进行交叉编译

javascript - JavaScript 1.7 中的解构

string - 如何通过静态方法在 clojure 中进行 comp ?

graph - 如何覆盖引用类型的 println 行为

r- 使用 purrr::map 时存储警告消息而不丢弃结果

recursion - 如何在 SML 中递归计算数字的位数

clojure - 为自定义记录类型扩展 "name"