【发布时间】:2015-05-01 23:17:24
【问题描述】:
Clojure async put! docs 说(强调)
异步将一个 val 放入端口,在以下情况下调用 fn0(如果提供) 完全的。不允许使用 nil 值。如果关闭会抛出。如果 随叫随到? (默认为真)为真,并且立即看跌 接受,将在调用线程上调用 fn0。 返回零。
但示例代码返回 true
user=> (put! c "XYZ")
true
文档不正确还是我遗漏了什么?
【问题讨论】:
标签: clojure
Clojure async put! docs 说(强调)
异步将一个 val 放入端口,在以下情况下调用 fn0(如果提供) 完全的。不允许使用 nil 值。如果关闭会抛出。如果 随叫随到? (默认为真)为真,并且立即看跌 接受,将在调用线程上调用 fn0。 返回零。
但示例代码返回 true
user=> (put! c "XYZ")
true
文档不正确还是我遗漏了什么?
【问题讨论】:
标签: clojure
这已在this commit 中修复,新的文档字符串为:
“异步将 val 放入端口,调用 fn1(如果提供) 完成,通过错误的 iff 端口已经关闭。零值是 不允许。如果随叫随到? (默认为真)为真,看跌期权为 立即接受,将在调用线程上调用 fn1。退货 除非端口已经关闭,否则为 true。"【讨论】:
fn1 (the 1) 是指一个 arg 吗?
([port val fn1] (put! port val fn1 true)) creative 嗯?
(put! c 125 (fn [] (println "done with put"))) 并在执行take! 时得到了clojure.lang.ArityException: Wrong number of args (1) passed。但是(put! c 125 (fn [x] (println "done with put"))) 工作得很好,这让我相信它需要一个 1 arg 函数。
(if on-caller? (fn1 ret) (dispatch/run #(fn1 ret)))