我有一些回调,其参数定义如下:val getMoreFunction : (() -> FSDirResult)? = null
可为空,因为我需要知道该函数是否实际定义。但我觉得这很糟糕。我宁愿将{}
而不是null
传递给我的回调。那么有没有办法确定是否传递了空函数?
最佳答案
理想情况下,您将拥有一个可以称为的默认参数,即:
fun saneDefault(getMoreFunction: (() -> String) = { "" }): Boolean {
val result = getMoreFunction()
return result.isEmpty()
}
但是,如果您确实真的需要知道是否传递了参数,则可以存储默认参数值,如下所示:
private val DEFAULT = { throw UnsupportedOperationException("this shouldn't be called") }
fun isDefaultPassed(getMoreFunction: (() -> String) = DEFAULT): Boolean {
if(getMoreFunction == DEFAULT){
return true
}
return false
}