首页 > 解决方案 > 如果对象不为空,则创建运行函数的扩展

问题描述

我可以使用 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 }

标签: kotlinkotlin-extension

解决方案


let您可以使用Kotlin 标准库中的函数,而不是创建自己的扩展函数:

maybeNullInt?.let(::doSomething)

::- 在 Kotlin 中,我们使用此运算符按名称引用函数。


推荐阅读