Scala применение частичной функции
Scala частичное применение функции является выражением, вы не предоставите все необходимые параметры функции, только необходимо предоставить частично, либо не обеспечивают необходимые параметры.
Ниже приведены примеры, мы выводим данные журнала:
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) } }
Реализация указанного выше кода, выход:
$ 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
Пример, журнал () метод принимает два параметра: дата и сообщение. Мы звонили три раза во время выполнения программы, значения параметров одни и те же даты, другое сообщение.
Мы можем использовать вышеуказанный метод частичного применения оптимизации функции, связанной параметр первой дате, второй параметр, чтобы использовать подчеркивание (_), чтобы заменить недостающий список аргументов, а индекс новой функции значения, присвоенного переменной. Примеры вышеуказанного изложить в следующей редакции:
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) } }
Реализация указанного выше кода, выход:
$ 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