我想將一個閉包傳遞給一個方法作爲一個選項,我正在做如下所示。我得到一個編譯錯誤,如下所示。是否可以將一個可選的閉包參數傳遞給一個函數?如何將可選的閉包參數傳遞給函數?
def sampleMethod(a: String, b: String, optionalMethod: Option[(String, Int) => Unit]) {
// do some processing with a and b
optionalMethod match {
case Some(optionalMethod) => {
optionalMethod("a",3)
}
case _
log("no optional method passed")
}
}
// definition of optMethod in some other place
val optMethod = (c: String, d: Int) => {
// some processing with c, d and external values
}
// invoke
sampleMethod("hi", "bye", optMethod) => FAILS TO COMPILE
ERROR = type mismatch. expecting Option[(String, Int) => Unit] found (String, Int) => Unit
sampleMethod(「hi」,「bye」,Some(optMethod)) – twillouer 2013-02-08 15:03:49
optionalMethod.map(f => f(「a」,3))更清晰 – twillouer 2013-02-08 15:04:36
只是因爲其他語言及其用戶羣體sl with不樂termino邏輯,我們不要在這裏做同樣的事情。 「關閉」是指在函數文字中使用自由變量(在該函數的主體中沒有綁定的名稱),並將這些引用「關閉」到詞法環境中。並非所有功能都涉及到關閉詞彙環境。並非所有函數都是函數文字。例如,它們經常通過另一個功能或方法的「部分應用」來創建(由編譯器自動或透明地編譯或顯式地創建)。 – 2013-02-08 15:46:47