Clojure def vs定义一个没有参数的函数

我用clojure编写了一个程序,但其中一些函数没有参数。 编写诸如“def”而不是“defn”而没有参数的函数会有什么好处?


def s只被评估一次,而defn s(有或没有参数)每次被调用时都被评估(执行)。 所以如果你的函数总是返回相同的值,你可以将它们改为def s,否则不会。


user=> (def t0 (System/currentTimeMillis))
user=> (defn t1 [] (System/currentTimeMillis))
user=> (t1)
1318408717941
user=> t0
1318408644243
user=> t0
1318408644243
user=> (t1)
1318408719361

(defn name ...)只是一个变成(def name(fn ...)的宏,不管它有多少个参数,所以它只是一个快捷方式,详见(doc defn)。

链接地址: http://www.djcxy.com/p/82565.html

上一篇: Clojure def vs defn for a function with no arguments

下一篇: Clojure type hints syntax