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

这将是对使用partition的一些人代码的潜在破坏性更改。partition-all的行为正如您所期望的。

此外,您对文档的担忧是在指定了作为参数的补位元素时,但是您的示例没有指定任何补位元素。

0 投票

评论由:halgari发布

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

0 投票

评论者:jafingerhut

在我看来,更精确地记录当前行为始终是受欢迎的。

0 投票

评论由:cldwalker发布

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

0 投票

评论由:arichiardi发布

我对这一点也有一些困惑……尤其是,我无法弄清楚为什么(partition 2 3 (链接:1 2 3 4 5 6 7))不是'((1 2) (4 5) (7))……最好重写那个评论。

0 投票

评论由:stu发布

我认为新的措辞并不更清晰。此外,它没有将“较少的”替换为“更少的”。

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