2010-07-26 49 views
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) 

回答

8

是(爲什麼)這個真的應該有例外,被禁止?

scaladoc引用:

Range類表示範圍的整數值[開始端)與非零步驟值步驟。一系列的行爲也像一個序列(支持長度和包含)。

這個限制是有道理的。步長爲零的範圍始終爲無窮大,並且只由下限值組成。儘管有人可能會說無限範圍是可能的(懶惰評估),但範圍上限的概念將被認爲是荒謬的。步驟0的範圍不是範圍,即使它無限長,因爲上限沒有重要性。

所以如果一個人真的想要一個無限的單一值,Scala會讓我們更加明確。

+0

thnx,應該在閱讀scaladoc時更加細心 – sgp 2010-07-26 11:33:45