aplicación de función parcial Scala
Scala aplicación parcial de la función es una expresión, no proporciona todos los parámetros necesarios de la función, sólo tendrá que proporcionar en parte, o no proporcionan los parámetros necesarios.
Los siguientes ejemplos, que imprimen la información de registro:
import java.util.Date object Test { def main(args: Array[String]) { val date = new Date log(date, "message1" ) Thread.sleep(1000) log(date, "message2" ) Thread.sleep(1000) log(date, "message3" ) } def log(date: Date, message: String) = { println(date + "----" + message) } }
Aplicación del código anterior, la salida es:
$ scalac Test.scala $ scala Test Mon Dec 02 12:52:41 CST 2013----message1 Mon Dec 02 12:52:41 CST 2013----message2 Mon Dec 02 12:52:41 CST 2013----message3
Ejemplo, log () toma dos parámetros: la fecha y el mensaje. Llamamos tres veces durante la ejecución del programa, los valores de los parámetros son la misma fecha, un mensaje diferente.
Podemos utilizar el método anterior de la aplicación parcial de la optimización de la función, primer parámetro de fecha límite, el segundo parámetro de utilizar un guión bajo (_) para reemplazar la lista de argumentos que faltan, y el índice de la nueva función del valor asignado a la variable. Los ejemplos de la modificación anterior de la siguiente manera:
import java.util.Date object Test { def main(args: Array[String]) { val date = new Date val logWithDateBound = log(date, _ : String) logWithDateBound("message1" ) Thread.sleep(1000) logWithDateBound("message2" ) Thread.sleep(1000) logWithDateBound("message3" ) } def log(date: Date, message: String) = { println(date + "----" + message) } }
Aplicación del código anterior, la salida es:
$ scalac Test.scala $ scala Test Mon Dec 02 12:53:56 CST 2013----message1 Mon Dec 02 12:53:56 CST 2013----message2 Mon Dec 02 12:53:56 CST 2013----message3