gpt4 book ai didi

clojure - 有没有办法在不消耗它们的值的情况下窥视 Clojure 异步 channel ?

转载 作者:行者123 更新时间:2023-12-04 17:57:16 24 4
gpt4 key购买 nike

我正在尝试调试一些东西,我想在使用它之前先看看 channel 上有什么。

最佳答案

仅出于调试目的,您可以使用类似于下面函数的东西来观察 channel 上的值,而无需实际 take!ing 它(警告:这在很大程度上依赖于 core.异步 implementation details ):

(defn peek [ch]
(if (and (.buf ch)
(pos? (count (.buf ch))))
(if (instance? clojure.core.async.impl.buffers.PromiseBuffer
(.buf ch))
(a/<!! ch)
(last (.buf (.buf ch))))
(some-> ch .puts first second)))

core.async 本身不提供用于查看 channel 值的公共(public) API。

正如@amalloy 所指出的,上述函数对于其他类型的缓冲区可能会失败,特别是那些没有声明 buf 字段的缓冲区。

关于clojure - 有没有办法在不消耗它们的值的情况下窥视 Clojure 异步 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39333917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com