Clojure异步放置!返回值

Clojure异步放置!返回值,clojure,Clojure,说(加强调) 异步将val放入端口,在 完成不允许使用nil值。如果关闭,将抛出。如果 打电话的?(默认为true)为true,并且立即执行看跌期权 已接受,将在调用线程上调用fn0返回零。 但示例代码返回true user=> (put! c "XYZ") true 文档是否不正确或我遗漏了什么?这已在中修复,新文档字符串显示: "Asynchronously puts a val into port, calling fn1 (if supplied) when complete,

说(加强调)

异步将val放入端口,在 完成不允许使用nil值。如果关闭,将抛出。如果 打电话的?(默认为true)为true,并且立即执行看跌期权 已接受,将在调用线程上调用fn0返回零。

但示例代码返回true

user=> (put! c "XYZ")
true
文档是否不正确或我遗漏了什么?

这已在中修复,新文档字符串显示:

"Asynchronously puts a val into port, calling fn1 (if supplied) when complete, passing false iff port is already closed. nil values are not allowed. If on-caller? (default true) is true, and the put is immediately accepted, will call fn1 on calling thread. Returns true unless port is already closed." 异步地将val放入端口,在 完成,传递错误的iff端口已关闭。零值为 不允许。如果on caller?(默认值为true)为true,并且put为 立即接受,将在调用线程时调用fn1。返回 除非端口已关闭,否则为true。“
fn1
(1)是否表示一个arg?不,它只是参数的名称
([port val fn1](put!port val fn1 true))
创造性的,呃?我的意思是fn1表示一个arg函数的约定吗?我尝试了
(put!c 125(fn[](println“done with put”))
并获得了
clojure.lang.ArityException:执行
take时传递的参数(1)数量错误。但是
(put!c 125(fn[x](println“done with put”))
工作得很好,这让我相信它需要一个1 arg函数。是的,这是对的,它是用一个参数调用的,这个参数是put的结果。像这样
(如果在调用方?(fn1 ret)(分派/运行#(fn1 ret)))