defonce

(defonce name expr)

name 的 root value 设置为 expr 的值,当且仅当 name 还没有设置 root value 。

如果 name 已经有 root value ,那么 expr 不会被求值。

user=> number                       ; 没有 root value
;CompilerException java.lang.RuntimeException: Unable to resolve symbol: number in this context, compiling:(NO_SOURCE_PATH:0)

user=> (defonce number 10086)       ; 设置 root value
#'user/number

user=> number
10086

user=> (defonce number 123123)      ; 已有 root value ,设置失败
nil

user=> number
10086

讨论

comments powered by Disqus

Previous topic

defn-

Next topic

defprotocol