Scala partial application function
Scala partial application function is an expression, you do not need to provide all the parameters needed by the function, only need to provide some, or do not provide the required parameters.
For the following example, we print log information:
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)
}
}
Execute the above code, and the output is as follows:
$ scalac Test.scala
$ scala Test
Mon Dec 02 12:52:41 CST 2018----message1
Mon Dec 02 12:52:41 CST 2018----message2
Mon Dec 02 12:52:41 CST 2018----message3
In the instance log()
method receives two parameters: date
and message
. We called the parameter three times when the program was executed the date
values are all the same. message
is different.
We can use the partial application function to optimize the above method, binding the first date
parameter, use underline for the second parameter(_) replace the missing parameter list and assign the index of the new function value to the variable. The above example is modified as follows: