I am really not sure how to name the title, hence I am going to explain it as best as I can:

val a = b ?: ({
    val temp = c.evaluate()
    store(temp)
    temp // returns temp to the lambda, which will set `a` to `temp` if `b` is null 
})()

1:什么有效,我当前使用的是什么

这可以很好地工作,但我理想的做法是只使用代码挡路,而不是将lambda传递给函数,然后对其求值.在我的想象中,它应该是这样的:

val a = b ?: {
    val temp = c.evaluate()
    store(temp)
    temp // returns temp to the lambda, which will set `a` to `temp` if `b` is null 
}

2: what I would like to have

上面的代码可以做not个工作.我实际上只是在寻找一种更好的方式来编写1.

推荐答案

You can use the run function:

val a = b ?: run {
    val temp = c.evaluate()
    store(temp)
    temp
}

Kotlin相关问答推荐

来自SnapshotFlow的单元测试StateFlow仅发出initialValue

Jetpack Compose Material3和Material2 Slider onValueChangeFinded()的行为不同

如何编写带有依赖项的自定义Kotlin串行化程序?

新的jOOQ Gradle插件无法正确处理自引用关系

在构造函数中创建内部类实例时,只能使用包含类的接收器调用内部类的构造函数

如何让 LocalDateTime.parse 拒绝 24:00 时间

如何从 var list 或可变列表中获取列表流

kotest 更改环境变量

Jetpack Compose - 单击 LazyColumn 的项目时应用程序崩溃

JavaFX - 你如何在 Kotlin 中使用 MapValueFactory?

Android 导航组件 - 向上导航打开相同的片段

java - 如何将函数作为参数从java传递给kotlin方法?

在 Kotlin 中使用 @Parcelize 注释时如何忽略字段

将 Gradle 子元素与 Kotlin 多平台一起使用

Kotlin 语言是如何用 Kotlin 编写的?

如何从 Firestore 查询中排除元素?

如何在顶级函数中使用 koin 注入依赖项

带有迭代器函数的 Kotlin 无限序列

使用Dagger 2提供函数依赖性

Kotlin:相互递归函数的尾部递归