2017-08-21 54 views
2

如何檢查Kotlin中的lambda是否爲空? 例如,我有一個像如何檢查kotlin中的lambda空虛

onError:(Throwable) -> Unit = {} 

我如何不同簽名是它的默認值來身體或價值應用到這個功能呢?

回答

6

您無法測試lambda的主體是否爲空(因此它不包含源代碼),但可以通過爲該值創建一個常量並將其用作默認值來檢查lambda是否爲默認值。您還可以檢查該值是否爲默認值:

fun main(args: Array<String>) { 
    foo() 
    foo { } 
    foo { println("Bar") } 
} 

private val EMPTY: (Throwable) -> Unit = {} 
fun foo(onError: (Throwable) -> Unit = EMPTY) { 
    if (onError === EMPTY) { 
     // the default value is used 
    } else { 
     // a lambda was defined - no default value used 
    } 
}