scala новый диапазон с шагом равным нулю - PullRequest
2 голосов
/ 26 июля 2010

Является ли (и почему) это действительно должно быть запрещено, за исключением?

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)

1 Ответ

8 голосов
/ 26 июля 2010

Является ли (и почему) это действительно должно быть запрещено за исключением?

Цитирование из scaladoc :

Класс Range представляет целочисленные значения в диапазоне [начало; конец) с ненулевой шаг шаг значения. В некотором роде действует как последовательность (поддерживает длину и содержит).

Это ограничение имеет смысл. Диапазон с нулевым размером шага всегда будет бесконечным и состоит только из нижнего граничного значения. В то время как можно утверждать, что возможны бесконечные диапазоны (ленивая оценка), концепция верхней границы диапазона была бы принята до абсурда. Диапазон с шагом 0 просто не является диапазоном , даже если он бесконечно длинный, потому что верхняя граница не имеет значения.

Так что если кто-то действительно хочет бесконечный поток одного значения, Scala по праву заставляет нас быть более явными.

...