我可以让kotlin扩展功能执行以下操作吗:
// extension
inline fun <T : Any> T?.runIfNotNull(function: (T) -> Unit) {
this?.let { function(it) }
}
// some function
fun doSomething(int: Int){
// do something
}
// doSomething will be called with maybeNullInt as argument,
// when maybeNullInt is not null
maybeNullInt?.runIfNotNull { doSomething }
基本上,我要替换
maybeNullInt?.let{ doSomething(it) }
与
maybeNullInt?.runIfNotNull { doSomething }
最佳答案
basically I want to do this maybeNullInt?.runIfNotNull { doSomething }
您已经可以使用
?.let
(或?.run
):maybeNullInt?.let(::doSomething)
您无法编写
{ doSomething }
,因为这意味着完全不同。有关::
语法的说明,请参见https://kotlinlang.org/docs/reference/reflection.html#callable-references。如果定义
runIfNotNull
,则实际上可以不使用?
来使用它:maybeNullInt.runIfNotNull(::doSomething)
(如果
maybeNullInt
是null
,则不执行任何操作)。
关于kotlin - 如果对象不为null,则创建运行函数的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55193571/