Sun*_*ike 4 lambda android function kotlin
如何检查Kotlin中lambda是否为空?例如,我有签名之类的
onError:(Throwable) -> Unit = {}
Run Code Online (Sandbox Code Playgroud)
我怎么能有不同的是它的默认值来自正文或应用于此功能的值?
gue*_*ter 11
您无法测试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
}
}
Run Code Online (Sandbox Code Playgroud)
只是不要使用空 lambda 作为默认值。
由于在 kotlin 中,可空性是一等公民,并且明确指示缺失值,因此我将传递 null 作为默认参数。
onError: ((Throwable) -> Unit)? = null
Run Code Online (Sandbox Code Playgroud)
签名看起来有点难看,但我认为这是值得的。
例如,它可以很容易地检查和处理,并且您不会期望 lambda 做一些有用的事情 - 特别是对于具有返回值的 lambda。
我在这里给出了相同的评论:https ://stackoverflow.com/a/38793639/3917943
归档时间: |
|
查看次数: |
866 次 |
最近记录: |