¿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?