欢迎!请查阅关于页面以了解更多关于如何使用此功能的信息。
{{sort}}的文档似乎不完整
{{sort}}在一些情况下可能会返回{{nil}}。在CTYP-228中有一个与此相关的讨论,以及更多背景信息。以下是由Nicola Mometto提供的复现案例:http://sprunge.us/VIFc?clj。文档字符串表示sort "返回coll中的项的排序序列",这并没有表明sort可以返回{{nil}}。
声明"比较器必须实现java.util.Comparator"。但这并不正确——比较器可以是任何可以接受2个参数并返回布尔值或数字的IFn。
对于第一个问题(nil 返回),将实现更改以绝不再返回nil可能是最整洁的修复。对于第二个问题,文档字符串可以引用描述有效比较函数的描述,这些函数可以被其他也接受比较器(如{{sort-by}}, {{sorted-set-by}}, {{sorted-map-by}})的功能引用。
评论由:alexmiller
第一个问题已被CLJ-1763处理,所以我建议从工单中删除它。
第二个问题在技术上确实是正确的——Arrays.sort()将调用Comparator,它需要一个Comparator。难点在于AFn基类实现了Comparator,所以所有从它扩展并支持2参数函数的实现都满足这个约束。但这可能有助于更好地指出这一点。
评论由:marc
我在想,这里的改进方案可以简单说明sort函数接受一个比较函数,并让用户查阅参考手册了解比较函数的详细信息。我在参考手册中未能找到相关信息,但Clojure指南对比较函数有很好的描述——请参考https://clojure.org/guides/comparators。我打算在参考手册中为比较函数编写一个小节——这个提议怎么样?
这个问题应该重写,以移除第一个问题。对于第二个问题,我认为可以添加一个条款/句子来涵盖比较函数可能是一个返回布尔值或数字的2参数函数。
如果您想更新网站,请在https://github.com/clojure/clojure-site上的问题或PR上进行。