2017-05-07 65 views

回答

3

當你調用一個函數時,你說的是將函數應用於參數。如果你通過了所有預期的論點,你已經完全應用了它。如果只發送幾個參數,則返回一個部分應用的函數。這給了你綁定一些參數的便利,並讓其餘部分在稍後被填充。

示例 :log()方法帶有兩個參數:date和message。我們希望多次調用該方法,其中日期的值相同,但消息的值不同。通過將該參數部分應用於log()方法,我們可以消除將日期傳遞給每個調用的噪音。爲此,我們首先將一個值綁定到日期參數,並通過在其位置放置下劃線來使第二個參數不受約束。結果是我們存儲在一個變量中的部分應用函數。

試試下面的例子

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) 
    } 
}