Scala-部分应用函数

Scala-部分应用函数,scala,Scala,Scala-部分应用的函数。 部分应用函数的用途及其工作原理 希望将其转换为部分应用的函数 def log(date: Date, message: String) = { println(date + "----" + message) } 当你调用一个函数时,你被说成是将函数应用于参数。如果您传递了所有预期的参数,那么您已经完全应用了它。如果只发送几个参数,则返回一个部分应用的函数。这使您可以方便地绑定一些参数,并将其余参数留待以后填写 示例 :log()方法接受两个参

Scala-部分应用的函数。 部分应用函数的用途及其工作原理

希望将其转换为部分应用的函数

def log(date: Date, message: String)  = {
      println(date + "----" + message)
   }

当你调用一个函数时,你被说成是将函数应用于参数。如果您传递了所有预期的参数,那么您已经完全应用了它。如果只发送几个参数,则返回一个部分应用的函数。这使您可以方便地绑定一些参数,并将其余参数留待以后填写

示例 :log()方法接受两个参数:日期和消息。我们希望多次调用该方法,对date使用相同的值,但对message使用不同的值。通过将该参数部分应用于log()方法,我们可以消除向每个调用传递日期的干扰。为此,我们首先将一个值绑定到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 + "----" + message)
   }
}

当你调用一个函数时,你被说成是将函数应用于参数。如果您传递了所有预期的参数,那么您已经完全应用了它。如果只发送几个参数,则返回一个部分应用的函数。这使您可以方便地绑定一些参数,并将其余参数留待以后填写

示例 :log()方法接受两个参数:日期和消息。我们希望多次调用该方法,对date使用相同的值,但对message使用不同的值。通过将该参数部分应用于log()方法,我们可以消除向每个调用传递日期的干扰。为此,我们首先将一个值绑定到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 + "----" + message)
   }
}