Scala - 部分应用函数

时间:2017-05-07 05:23:30

标签: scala

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

想要将其转换为部分应用函数。

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

1 个答案:

答案 0 :(得分:3)

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

示例 :log()方法有两个参数:日期和消息。我们想多次调用该方法,日期的值相同但消息的值不同。我们可以通过将该参数部分应用于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)
   }
}