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

欢迎!请查看关于页面,获取更多关于此功能的信息。

+1
文档

分区文档说明中提到:“如果填充元素不足,则返回包含少于n个项的分区。”然而,该函数的行为如下:

user=> (partition 3 (range 10)) ((0 1 2) (3 4 5) (6 7 8)) user=> (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

这将可能对使用partion的一些人的代码造成破坏性更改,partition-all的行为如你所愿。

此外,你的关于文档的担忧是在提供了一个填充元素作为参数时,但是你的示例并没有指定任何填充元素。

0

评论者:halgari

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

0

评论者:jafingerhut

在我看来,更精确的当前行为文档总是受欢迎。

0

评论者:cldwalker

我已上传一个补丁,该补丁指出了分区丢弃尾部元素的时机和方法
"如果没有提供填充集合,那么从输入集合的长度除以n后剩余的任何尾部元素将不包括在分区中。"

0

评论者:arichiardi

我对这一点也有点困惑,尤其是我无法想出为什么(partition 2 3 (link: 1 2 3 4 5 6 7))不是((-1 2) (4 5) (7))...最好重写该评论。

0

评论者:stu

我发现新词句并没有更加清楚。另外,它将/less/改成了/fewer/

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