欢迎!请查看关于 页面,了解更多关于如何使用本网站的信息。
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
评论者:raek
当前的文档确实简短地提到了 '步' 参数
"(链接 ...) 到 (排除),通过 步长,其中头 (链接 ...) "
但由于这个可能很容易被忽略,我认为在与文档相关的补充还是一个不错的建议。
我的建议
返回从开始(包含)到结束的延迟序列(排除),步长,其中开始默认为0,步长默认为1,结束到无穷大。 步长可以是负数以进行反向计数。
评论者:pbalduino
有关于它的任何消息吗?
我能负责吗?
评论者:jafingerhut
不,目前没有关于这个问题的消息。它处于“开启”状态,意味着目前还没有判断Clojure筛选器或Rich Hickey是否对这种改变感兴趣。http://dev.clojure.org/display/community/JIRA workflow
然而,创建一个补丁似乎并不需要太多时间。具体的步骤在这里给出:http://dev.clojure.org/display/community/Developing Patches
评论者:alexmiller
试试吧!
我无法重现这个问题:“当步长为0时,返回从start起的一个无限序列。”
https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj#L2726-L2729
这是正确吗?
range最后一次修改是在ticket CLJ-1018,请参见附带的补丁,我认为这是在Clojure 1.5之后但在Clojure 1.6之前应用的那一个。
也许这个更改在文档字符串中声称的并不正确。我还没有详细查看。
在Clojure 1.6中,如果修改文档字符串的最后两句话可能更为准确。range的文档字符串目前为
返回从开始(包含)到结束的延迟序列(排他地),通过步长,其中start默认为0,步长为1,结束为无穷大。当步长为0时,返回一个从start起的无限序列。当start等于end时,返回空列表。可能更准确的说法是
无穷大。当start等于end时,返回空列表。当step
返回从开始(包含)到结束的延迟序列(排他地),通过步长,其中start默认为0,步长为1,结束为等于0,且start和end不同时,返回一个从start起的无限序列。。。