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

欢迎!请查看关于 页面,了解更多关于如何使用本网站的信息。

0 投票
文档

range 函数的文档实际上说明了以下用法

(range 10 0 -1) -> (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)

当前文档

返回一个从头(包含)到尾(不包括)的延迟序列,步长为步,其中头默认为0,步长默认为1,尾为无穷大。当步长等于0时,返回从头开始的无限序列。当头等于尾时,返回空列表。

也可以逆向计算,例如,从10开始向后计数
-1:(范围10 0 -1)。

建议

增加最终句子:“步长可以是负数。”

补丁:clj-704.patch

8 个答案

0 投票

评论者:raek

当前的文档确实简短地提到了 '步' 参数

"(链接 ...) 到 (排除),通过 步长,其中头 (链接 ...) "

但由于这个可能很容易被忽略,我认为在与文档相关的补充还是一个不错的建议。

我的建议

返回从开始(包含)到结束的延迟序列
(排除),步长,其中开始默认为0,步长默认为1,结束
到无穷大。 步长可以是负数以进行反向计数。

0 投票

评论者:pbalduino

有关于它的任何消息吗?

我能负责吗?

0 投票

评论者:jafingerhut

不,目前没有关于这个问题的消息。它处于“开启”状态,意味着目前还没有判断Clojure筛选器或Rich Hickey是否对这种改变感兴趣。http://dev.clojure.org/display/community/JIRA workflow

然而,创建一个补丁似乎并不需要太多时间。具体的步骤在这里给出:http://dev.clojure.org/display/community/Developing Patches

0 投票

评论者:alexmiller

试试吧!

0 投票

评论者:pbalduino

我无法重现这个问题:“当步长为0时,返回从start起的一个无限序列。”

https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj#L2726-L2729

这是正确吗?

0 投票

评论者:jafingerhut

range最后一次修改是在ticket CLJ-1018,请参见附带的补丁,我认为这是在Clojure 1.5之后但在Clojure 1.6之前应用的那一个。

也许这个更改在文档字符串中声称的并不正确。我还没有详细查看。

0 投票

评论者:jafingerhut

在Clojure 1.6中,如果修改文档字符串的最后两句话可能更为准确。range的文档字符串目前为

返回从开始(包含)到结束的延迟序列
(排他地),通过步长,其中start默认为0,步长为1,结束为
无穷大。当步长为0时,返回一个从start起的无限序列。当start等于end时,返回空列表。
可能更准确的说法是

无穷大。当start等于end时,返回空列表。当step

返回从开始(包含)到结束的延迟序列
(排他地),通过步长,其中start默认为0,步长为1,结束为
等于0,且start和end不同时,返回一个从start起的无限序列。

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