如何检查Kotlin中lambda是否为空? 例如,我有像
这样的签名onError:(Throwable) -> Unit = {}
我有什么区别,它的默认值是正文还是应用于此函数的值?
答案 0 :(得分:9)
您无法测试lambda的主体是否为空(因此它不包含源代码),但您可以通过为该值创建常量并将其用作默认值来检查lambda是否为您的默认值。您还可以检查该值是否为默认值:
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
答案 1 :(得分:1)
请不要将空的lambda作为默认值。
由于Kotlin中的可空性是头等公民,并且清楚地表明缺少值,因此我将null用作默认参数。
onError: ((Throwable) -> Unit)? = null
签名看起来有些丑陋,但我认为这是值得的。
例如,可以轻松地对其进行检查和处理,并且您不希望lambda会做有用的事情-尤其是对于具有返回值的lambda。
我在这里也发表了同样的评论:https://stackoverflow.com/a/38793639/3917943