aplicação de função parcial Scala
Scala aplicação parcial da função é uma expressão, você não fornecer todos os parâmetros necessários da função, só precisa fornecer em parte, ou não fornecer os parâmetros necessários.
Os exemplos a seguir, vamos imprimir as informações de log:
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) } }
Implementação do código acima, a saída é:
$ 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
Exemplo, log () método tem dois parâmetros: data e mensagem. Nós chamado três vezes durante a execução do programa, os valores dos parâmetros são a mesma data, uma mensagem diferente.
Podemos usar o método acima de aplicação parcial de otimização função, ligada primeiro parâmetro de data, o segundo parâmetro para usar um sublinhado (_) para substituir a lista de argumentos em falta, eo índice da nova função do valor atribuído à variável. Exemplos da redacção acima da seguinte forma:
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) } }
Implementação do código acima, a saída é:
$ 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