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

欢迎!请查看 关于 页面以了解更多关于其功能的详细信息。

+3
Clojure
重标记

关于 sort 的 clojuredoc 写道
比较器必须实现 java.util.Comparator。
然而,这似乎并非如此。作为 2-ary sort 的第一个参数提供的函数可以显式返回 truefalse;它不需要实现java.util.Comparator

如果 clojuredoc 被更新来反映这个重要的特性将会很好。

另一个文档 https://clojure.org/guides/comparators 对此进行了更详细的解释。但即使这个文档存在,我认为它也不能证明(在我看来)简短的文档是不完整的。

1 个回答

+1

这并没有错。Clojure函数是java.util.Comparator的实例。Dave在评论中提供的链接提供了更多细节。

尽管如此,这似乎可以进行改进?文档字符串没有指向那个指南。指南本身也没有提到所有Clojure函数都实现了自己的compare方法。
我同意`sort`和`sort-by`的文档字符串应该指向该指南。

该指南本身确实没有明确提及该实现细节,但我看不到还有其他方式可以这样解释,因为它明确表示你可以通过调用任何Clojure函数的compare方法来看到这一点。

并且这个特定的细节在https://clojure.org/reference/special_forms#fn,上有明确提及,这也是`fn`文档字符串中提到的。
关于指南中的实现细节文本很公平。同意文档字符串指向指南可能是目标。

编辑了
看起来文档应该不仅提供真实信息,还应该提供有用的信息。 读者想知道如何构造一个有效的比较函数。 也就是说,它应该是以下两种中的一种:
或者 2)一个返回负数、零或正整数的二进制函数,这表示其参数的相对顺序。 有关角的更多细节,请参阅 ...
我认为在排序文档字符串中提到 fn 实现了 Comparator 将解决这个问题。
...