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))

建议:建议更新文档字符串(粗体为更新内容)

返回一个以步距 step 分隔的 n 个元素的列表的懒序列
如果未提供步距,则默认为 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))不是'((1 2) (4 5) (7))...最好重写那条注释。

0

评论者:stu

我认为新的措辞并没有更清晰。此外,它没有替换/less为/fewer。

0
...