Я Питер Пилигрим. Я наблюдал, как Мартин Одерский создает абстракцию управления в Scala. Однако я еще не могу повторить его внутри IntelliJ IDEA 9. Является ли это IDE?
package demo
class Control {
def repeatLoop ( body: => Unit ) = new Until( body )
class Until( body: => Unit ) {
def until( cond: => Boolean ) {
body;
val value: Boolean = cond;
println("value="+value)
if ( value ) repeatLoop(body).until(cond)
// if (cond) until(cond)
}
}
def doTest2(): Unit = {
var y: Int = 1
println("testing ... repeatUntil() control structure")
repeatLoop {
println("found y="+y)
y = y + 1
}
{ until ( y < 10 ) }
}
}
Сообщение об ошибке:
Информация: компиляция завершена с 1 ошибкой и 0 предупреждениями Информация: 1 ошибка
Информация: 0 предупреждений
C:\Users\Питер\IdeaProjects\HelloWord\SRC\демонстрационная\Control.scala
Ошибка: Ошибка: ошибка строки (57): Control.this.repeatLoop({
Scala.this.Predef.println( "найдено y =". + (y));
y = y. + (1)
}) типа Control.this.Until не принимает параметры
repeatLoop {
В функции curried можно думать, что тело возвращает выражение (значение y + 1), однако параметр body объявления repeatUntil ясно говорит, что это можно игнорировать или нет?
Что означает ошибка?