Scala 局部应用函数

Scala 局部应用函数

局部应用函数

调用函数时,据说是将函数应用于参数。如果传递所有期望的参数,则说明已完全应用了它。如果仅发送几个参数,则将返回局部应用的函数。这使您可以方便地绑定一些参数,并在以后填充其余参数。尝试以下操作,它是显示局部应用函数的简单示例程序-

import java.util.Date

object Demo {
   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.toString + "----" + message)
   }
}

输出-

Wed Jun 24 07:19:01 UTC 2020----message1
Wed Jun 24 07:19:01 UTC 2020----message2
Wed Jun 24 07:19:01 UTC 2020----message3

在这里,log()方法采用两个参数:date和message。我们想多次调用该方法,日期的值相同,消息的值不同。我们可以通过将部分参数应用于log()方法来消除将日期传递给每个调用的麻烦。为此,我们首先将一个值绑定到date参数,然后通过在其下划线放置第二个参数来使其不受约束。结果是部分应用的函数,我们将其存储在变量中。尝试下面的示例程序,仅使用未绑定的参数消息来调用此新方法。-

import java.util.Date

object Demo {
   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.toString + "----" + message)
   }
}

输出-

Wed Jun 24 07:23:03 UTC 2020----message1
Wed Jun 24 07:23:03 UTC 2020----message2
Wed Jun 24 07:23:03 UTC 2020----message3

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程