0
斯卡拉 - 部分應用功能。 部分應用函數及其工作原理的用途斯卡拉 - 部分應用功能
想將其轉換爲部分應用函數。
def log(date: Date, message: String) = {
println(date + "----" + message)
}
斯卡拉 - 部分應用功能。 部分應用函數及其工作原理的用途斯卡拉 - 部分應用功能
想將其轉換爲部分應用函數。
def log(date: Date, message: String) = {
println(date + "----" + message)
}
當你調用一個函數時,你說的是將函數應用於參數。如果你通過了所有預期的論點,你已經完全應用了它。如果只發送幾個參數,則返回一個部分應用的函數。這給了你綁定一些參數的便利,並讓其餘部分在稍後被填充。
示例 :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)
}
}