kotlin - 如何在 Kotlin 中惯用地调用可为空的 lambda?
问题描述
给定以下 lambda:
val lambda: () -> Unit = null
以下哪个调用是 Kotlin 调用可空 lambda 的惯用方法?
lambda?.let { it() }
对比
lambda?.invoke()
解决方案
让我们问一下 Kotlin 编译器:
val lambda: (() -> Unit)? = null
lambda()
编译器说:
Reference has a nullable type '(() -> Unit)?', use explicit '?.invoke()' to make a function-like call instead
所以,是的,似乎这?.invoke()
是要走的路。
虽然这对我来说似乎很好(编译器也是):
if (lambda != null) {
lambda()
}
推荐阅读
- python - 使用 SQLAlchemy 有效删除嵌套记录
- mysql - 如何在包含相应组的最大值的mysql表中添加临时列
- r - 如何按每组的列计算频率
- python - python abstractmethods:将列表附加到abstractmethod的子类
- css - 我可以将 CSS 选择器作为道具传递给外部组件中的样式类吗?
- java - 如何在读取 .txt 文件 java 时包含空格和其他字符
- asp.net-mvc-5 - 当前上下文中不存在名称“配置”
- html - 仅当它包含特定类时如何更改css中的特定标签
- html - 如何使用 sendmail 在 HTML 中显示嵌入的图像?
- python - 如何映射或排序两个不同数据框的值?