kotlin - 如果对象不为null,则创建运行函数的扩展

标签 kotlin

我可以让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)

(如果maybeNullIntnull,则不执行任何操作)。

关于kotlin - 如果对象不为null,则创建运行函数的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55193571/

相关文章:

kotlin - 在 Java 对象的 Kotlin 中设置属性时出现奇怪的 "Val cannot be reassigned"错误

java - 使用 TextWatcher 的 EditText 动态掩码(用于血压单位)

java - Eclipse中的Kotlin和Java项目,NoClassDefFoundError,类文件在哪里?

java - Dagger2 - 应用程序不能依赖于多个作用域组件

java - 无法调用不同模块中的类(动态功能模块)

android - Android Studio : java.lang.IllegalArgumentException: Given String is empty or null

Android Studio 金丝雀 2020.3.1 : Kotlin Unresolved References

java - JUnit 5 中的 TestName 规则等效于什么?

Kotlin Jetpack Compose DragGesture 属性取消我的 View 的滚动

android - 为什么我的应用程序崩溃调用 "setupActionBarWithNavController(navController, appBarConfiguration)"