¿Cómo se hace la abstracción de control de escala en repetición hasta?

Soy Peter Pilgrim Vi a Martin Odersky crear una abstracción de control en Scala. Sin embargo, todavía no puedo repetirlo dentro de IntelliJ IDEA 9. ¿Es el 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 ) }
  }

}

El mensaje de error dice:

Información: compilación completada con 1 error y 0 advertencias
Información: 1 error
Información: 0 advertencias
C: \ Users \ Peter \ IdeaProjects \ HelloWord \ src \ demo \ Control.scala
Error: Error: error de línea (57): Control.this.repeatLoop ({
scala.this.Predef.println ("encontrado y =". + (y));
y = y. + (1)
}) de tipo Control.this.Until no toma parámetros
repeatLoop {

En la función curry, se puede pensar que el cuerpo devuelve una expresión (el valor de y + 1), sin embargo, el parámetro del cuerpo de la declaración de repeatUntil dice claramente que esto se puede ignorar o no.

¿Qué significa el error?

Respuestas a la pregunta(4)

Su respuesta a la pregunta