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

Welcome!请访问关于页面了解更多关于此功能的信息。

0
文档

range 函数的文档确实指出了以下用法

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

当前文档

返回一个从起始值(包含)到结束值(不包含),以步长为单位的 lazily seq 数组,其中起始值默认为 0,步长默认为 1,结束值默认为无穷大。当步长为 0 时,返回以起始值为无穷大的序列。当起始值等于结束值时,返回空列表。

步长也可以是递减的,例如
从 10 以 -1 递减:(range 10 0 -1)。

建议

添加最后一句:“步长可以是负数。”

补丁: clj-704(patch)

8 答案

0

由:raek 评论

当前的文档实际上简要提到了 'step' 参数

"(链接: ...) 到结束值(不包含),通过 步长,其中起始值为 (链接: ...)"

但由于这个可能很容易被忽略,文档中的这个补充仍然是个好主意,我认为。

我的建议

返回从起始值(包括)到结束值(不包括)的 lazily seq 数组
,通过步长,其中起始值默认为 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被修改是因为任务票号CLJ-1018。请参阅那里的附件补丁,我相信这是在Clojure 1.5之后、Clojure 1.6之前应用的补丁。

也许这个更改并未像文档字符串所述的那样做到。我还没有仔细查看。

0

评论者:jafingerhut

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

返回从起始值(包括)到结束值(不包括)的 lazily seq 数组
(exclusive),步进方式,其中start默认为0,步长为1,end为
无穷大。当步长等于0时,返回从start开始的无穷序列。当start等于end时,返回空列表。
可能更准确的说法是

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

返回从起始值(包括)到结束值(不包括)的 lazily seq 数组
(exclusive),步进方式,其中start默认为0,步长为1,end为
等于0且start和end不同时,返回从start开始的无穷序列。
当start等于end时,返回空列表。
当步长等于0且start和end不同时,返回从start开始的无穷序列。

0
参考: https://clojure.atlassian.net/browse/CLJ-704(由 alex+import 报告)
...