Wie kann man Scala Control Abstraction so lange wiederholen, bis?

Ich bin Peter Pilgrim. Ich habe gesehen, wie Martin Odersky in Scala eine Kontrollabstraktion erstellt hat. Ich kann es jedoch noch nicht in IntelliJ IDEA 9 wiederholen. Ist es die 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 ) }
  }

}

Die Fehlermeldung lautet:

Information: Kompilierung mit 1 Fehler und 0 Warnungen abgeschlossen
Information: 1 Fehler
Information: 0 Warnungen
C: \ Users \ Peter \ IdeaProjects \ HelloWord \ src \ demo \ Control.scala
Error: Fehler: Zeile (57) Fehler: Control.this.repeatLoop (
scala.this.Predef.println ("found y =". + (y));
y = y. + (1)
}) vom Typ Control.this.Until akzeptiert keine Parameter
repeatLoop

In der Curry-Funktion kann der Body als Ausdruck (der Wert von y + 1) betrachtet werden, der Deklarations-Body-Parameter von repeatUntil sagt jedoch eindeutig, dass dies ignoriert werden kann oder nicht?

Was bedeutet der Fehler?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage