【发布时间】:2018-01-25 03:02:45
【问题描述】:
(def ^:dynamic *d* 1)
(binding [*d* 2]
(println *d*)
(repeatedly 1 #(println *d*)))
输出:
2
1
为什么?为什么repeatedly里面的函数会从binding外面看到动态var的值?
顺便查了一下(.getId (java.lang.Thread/currentThread))匿名函数内外:是一样的。
【问题讨论】:
标签: clojure thread-safety lazy-evaluation