2

(以及为什么)这真的应该被禁止吗?

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)
4

1 回答 1

8

(以及为什么)这真的应该被禁止吗?

引用scaladoc

Range 类表示范围 [start;end) 中的整数值,步长值非零。有点像序列的行为(支持长度和包含)。

这种限制是有道理的。步长为零的范围始终是无限的,并且仅包含下限值。尽管有人可能会争辩说无限范围是可能的(惰性评估),但范围内的上限的概念会被认为是荒谬的。步长为 0 的范围根本不是范围,即使它无限长,因为上限没有重要性。

因此,如果一个人真的想要一个单一值的无限流,Scala 理所当然地迫使我们更加明确。

于 2010-07-26T11:27:18.263 回答