Как сделать Scala Control Abstraction в Repeat To?
Я Питер Пилигрим. Я видел, как Мартин Одерский создал контрольную абстракцию в 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 ("найдено у =". + (у));
у = у. + (1)
}) типа Control.this.Until не принимает параметры
repeatLoop {
В функции curry можно считать, что тело возвращает выражение (значение y + 1), однако параметр тела объявления repeatUntil ясно говорит, что это можно игнорировать или нет?
Что означает ошибка?