8.20. Scala partial application function

发布时间 :2023-11-15 23:00:02 UTC      

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:

Principles, Technologies, and Methods of Geographic Information Systems  102

In recent years, Geographic Information Systems (GIS) have undergone rapid development in both theoretical and practical dimensions. GIS has been widely applied for modeling and decision-making support across various fields such as urban management, regional planning, and environmental remediation, establishing geographic information as a vital component of the information era. The introduction of the “Digital Earth” concept has further accelerated the advancement of GIS, which serves as its technical foundation. Concurrently, scholars have been dedicated to theoretical research in areas like spatial cognition, spatial data uncertainty, and the formalization of spatial relationships. This reflects the dual nature of GIS as both an applied technology and an academic discipline, with the two aspects forming a mutually reinforcing cycle of progress.