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

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

+1
文档

partition 的文档说明称 "如果填充元素不足,则返回小于 n 个元素的分区。" 然而,此函数的行为如下

用户=> (partition 3 (range 10)) ((0 1 2) (3 4 5) (6 7 8)) 用户=> (partition 4 (range 10)) ((0 1 2 3) (4 5 6 7))

建议:建议更新文档字符串 加粗

返回一个包含 n 个元素的列表的懒惰序列,每个列表间隔 step
分开。如果没有提供 step,则默认为 n,即分区不重叠。
如果没有提供填充集合,则在分割输入集合长度除以 n 后剩余的任何尾部元素将不包括在分区中。
如果提供了填充集合,则使用其元素作为必要来补充最后的分区,直到达到 n 个元素。
如果没有足够的填充元素,则返回一个小于 n 个元素的分区。

补丁:clj-1117.patch

7 答案

0

评论由:jafingerhut 撰写

这将可能破坏那些使用 partition 的一些人的代码,partition-all 的表现如你所愿。

另外,你关于文档的担忧是关于当指定了作为参数的填充元素时,但是你的示例没有指定任何填充元素。

0

评论由:halgari 撰写

我同意,但我认为文档应该明确表示:“如果没有提供填充,则输出分区中可能不会返回所有输入元素”或类似的内容。

0

评论由:jafingerhut 撰写

在个人观点中,总是欢迎对当前行为的更精确的文档。

0

评论者:cldwalker

我已经上传了一个补丁,该补丁会指出何时以及如何分区丢弃尾部元素
"如果没有提供填充集合,则从输入集合长度除以n后剩余的所有尾部元素将不会包含在分区中。"

0

评论者:arichiardi

我对这一点也感到有些困惑……特别是,我无法理解为什么(partition 2 3 (link: 1 2 3 4 5 6 7))不等于titles(1 2) (4 5) (7))……最好重新编写该注释。

0

评论者:stu

我发现新措词并没有更清晰。而且它没有s/less/fewer

0
参考: https://clojure.atlassian.net/browse/CLJ-1117 (由halgari报告)
...