请在2024 Clojure状态调查中分享您的想法!

欢迎!请查看关于页面,了解更多相关信息。

0投票
文档

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

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

当前文档

返回一个从起始位置(包含)到结束位置(不包含),通过步长构建的惰性序列,其中起始位置默认为0,步长默认为1,结束位置默认为无穷大。当步长等于0时,返回以起始位置开始的无限序列。当起始位置等于结束位置时,返回空列表。

也可以反向步进,例如计算
从10开始的倒计时为-1:(range 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投票
by

评论者:alexmiller

去做吧!

0投票
by

评论者:pbalduino

我无法重现这个问题:“当步长等于0时,返回从起始值开始的无限序列。”

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

这是正确的吗?

0投票
已回答 by

评论者:jafingerhut

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

也许这个更改在doc字符串中所声称的并不正确。我还没有仔细看过它。

0投票
已回答 by

评论者:jafingerhut

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

返回一个从起始位置(包含)到结束位置(不包含),通过步长构建的惰性序列
(排除),通过步长,其中起始默认值为0,步长默认值为1,结束无穷大。
当步长等于0时,返回从起始开始的无限序列。
当起始等于结束时,返回空列表。

可能更准确的说法是

返回一个从起始位置(包含)到结束位置(不包含),通过步长构建的惰性序列
(排除),通过步长,其中起始默认值为0,步长默认值为1,结束无穷大。
无穷大。当起始等于结束时,返回空列表。当步长等于0且起始和结束不同时,返回从起始无限开始的序列。

0投票
已回答 by
参考:https://clojure.atlassian.net/browse/CLJ-704(由alexis导入的)
...