Для цикла в Scala без последовательности?

Итак, во время прохождения прохождения «Scala для нетерпеливого» я ​​оказался вопросом: можете ли вы использовать Scala для цикла без последовательности?

Например, есть упражнение в книге, которая просит вас построить счетчик счетчика, который не может быть увеличен мимо Intetger.max_value. Чтобы проверить мое решение, я написал следующий код:

var c = new Counter
for( i <- 0 to Integer.MAX_VALUE ) c.increment()

Это бросает ошибку: последовательности не могут содержать более, чем элементы Int.maxValue. Мне кажется, что означает, что Scala сначала выделяет и заполняет объект последовательности, со значениями 0 через integer.maxValue, а затем выполнение контура FOREACH на этом объекте последовательности.

Я понимаю, что могу сделать это вместо этого:

var c = new Counter
while(c.value < Integer.MAX_VALUE ) c.increment()

, но есть ли способ сделать традиционный C-стиль для петли с оператором для оператора?

10
задан Adam Ness 8 September 2011 в 17:44
поделиться