如何将eivls运算符与可为null的lambda参数一起使用



我有一个函数,它的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()
}

相关内容

  • 没有找到相关文章

最新更新