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

欢迎!请参阅 关于 页面,了解更多关于这个网站如何运作的信息。

+1 投票
文档

关于 partition 的文档说明“如果填充元素不足,返回少于 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,则默认为 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 投票
参考: https://clojure.atlassian.net/browse/CLJ-1117 (由 halgari 提出)
...