(以及为什么)这真的应该被禁止吗?
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)
(以及为什么)这真的应该被禁止吗?
引用scaladoc:
Range 类表示范围 [start;end) 中的整数值,步长值非零。有点像序列的行为(支持长度和包含)。
这种限制是有道理的。步长为零的范围始终是无限的,并且仅包含下限值。尽管有人可能会争辩说无限范围是可能的(惰性评估),但范围内的上限的概念会被认为是荒谬的。步长为 0 的范围根本不是范围,即使它无限长,因为上限没有重要性。
因此,如果一个人真的想要一个单一值的无限流,Scala 理所当然地迫使我们更加明确。