scala new步长等于零的范围

sgp*_*sgp 2 scala increment range zero

是(和为什么)这应该被禁止,但例外?

scala> val r2 = 15 until (10, 0)

java.lang.IllegalArgumentException: requirement failed

scala> new Range(10,15,0)

java.lang.IllegalArgumentException: requirement failed
    at scala.Predef$.require(Predef.scala:133)
Run Code Online (Sandbox Code Playgroud)

Dar*_*rio 8

是(和为什么)这应该被禁止,但例外?

引自scaladoc:

Range类表示范围为[start; end]的整数值,为非零步长值.类似于序列的行为(支持长度和包含).

这种限制是有道理的.步长为零的范围始终为infine,只包含下限值.虽然有人可能认为无限范围是可能的(懒惰评估),但范围上限的概念将被视为荒谬.步骤0的范围不是范围,即使它是无限长的,因为上限没有重要性.

因此,如果一个人真的想要一个单一值的无限流,Scala正确地迫使我们更加明确.