2024 Clojure 状态调查! 分享您的想法。

欢迎!请参阅 关于 页面了解更多关于如何使用本站的信息。

0
文档

承诺可以被调用以向其传递一个值(与调用 {{deliver}} 具有相同的结果),但是这一点并没有在文档字符串中提及

(def p (promise)) (p 42) ;; 同样于 (deliver p 42) @p ;; 42

Docs 之前

返回一个承诺对象,该对象可以通过 deref/@ 来读取,并且只能通过 deliver 来设置一次。对 deref/@ ... 的调用...

建议: 将文档字符串更改为

clojure.core/promise 收到[] 返回一个承诺对象,它可以通过 deref/@ 来读取,并可以通过 deliver 或通过调用承诺来设置一次。对 deref/@ ... 的调用...

Patch: clj-2480-2.patch
预审: Alex Miller

3 个答案

0

评论由:hlewisship 发布

我认为我们在文档字符串中过度简略的价值(或定义)上存在分歧。

0

评论由:pbwolf 发布

调用承诺并不总是返回承诺。此外,deliver 的文档字符串没有描述返回值。我希望承诺和 deliver 的两个文档字符串 (promise 和 deliver) 保持同步。

意见:在我看来,clojure 的源代码中的 IFn 似乎就是一个 reify 的技巧,让 deliver 能触摸到承诺。如果直接调用承诺是官方 API 的计划,那么 deliver 就不会存在了。我们真的需要两种传递的方式吗?如果人们开始避免使用 deliver,我会失去一个寻找 clj 文件的好词!

0
by
参考: https://clojure.atlassian.net/browse/CLJ-2480(由 hlewisship 报告)
...