Passing a lambda to the last parameter

在Kotlin中,有一个约定,如果

val product = items.fold(1) { acc, e -> acc * e }

What is the purpose of this syntax?

推荐答案

这种语法为Kotlin提供了强大的DSL功能,它使函数看起来像语言 struct .例如:

with(car) {
   startUp()
   goToDestination()
}

这里with看起来像是语言构造,而它是一个简单的函数,接收lambda作为最后一个参数.

And this leads to such elegant things like Kotlin HTML DSL

Kotlin相关问答推荐

KTOR';S函数`staticResources`在Kotlin本机目标上不可用

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

如何在不基于数据 map 的情况下将图例添加到lets plot kotlin

Spring Boot Kotlin 数据类未使用 REST 控制器中的默认值初始化

Webpack 配置未应用于 kotlin 多平台react 项目

为什么记得不将 StateFlow 转换为特定类型?

Kotlin Path.useLines { } - 如何不获取 IOException("Stream closed")?

测试协程和线程之间的差异,我在kotlin中使用线程时无法得到OOM错误

如何连接两个 kotlin 流?

parallelStream()和asSequence().asStream().parallel()之间的区别

错误:cannot find symbol import com.gourav.news.databinding.ActivityDetailBindingImpl;

如何使用 Kotlin KClass 属性 simpleName 生成空值

如何为你的 Flutter 元素添加 Kotlin 支持?

Kotlin 插件错误:无法为类 org.jetbrains.kotlin.gradle.tasks.KotlinCompile 生成代理类

如何在 Kotlin 文件中的 Android Studio 中控制何时将 Imports 替换为通配符

Firebase 权限被拒绝

androidx.core:core-ktx:1.0.0 小部件包丢失

Kotlin:如何修改成对的值?

项目未与 Gradle 链接

在Kotlin中创建通用二维数组