我有一个函数,它的lambda参数可以为null,定义为-
fun download_a_file(callback_after_download_is_complete: (() -> Any)? = null)
{
// ... do things ...
}
其想法是,在下载文件后,无论是谁调用该函数,都可以在下载文件之后传递一个lambda函数来执行一些代码。
参数为null,因为可能有人不希望在下载后使用lambda。
所以在download_a_file function
里面我有这个代码-
if( callback_after_download_is_complete != null)
callback_after_download_is_complete()
这很有效,但并不优雅。如果可以的话,我宁愿在这里用猫眼接线员。然而,我没有找到任何关于如何使用elvis运算符调用可为null的lambda参数的好参考。你能做到吗?如果是,怎么做?
如果您注意到,您不能直接调用匿名可为null的函数:
Reference具有可为null的类型"(((->Any(?",使用显式"?。invoke(('进行类似函数的调用,而不是
所以你所要做的就是使用invoke/0
:
fun download_a_file(callback_after_download_is_complete: (() -> Any)? = null) {
callback_after_download_is_complete?.invoke()
}