在 Kotlin 中,有一个惯例:如果一个函数的最后一个参数接受一个函数,那么作为对应参数传递的 lambda 表达式可以放在括号外面: Passing a lambda to the last parameter。
val product = items.fold(1) { acc, e -> acc * e }
这个语法的目的是什么?val product = items.fold(1) { acc, e -> acc * e }
这个语法的目的是什么?这种语法使得 Kotlin 拥有出色的领域特定语言 (DSL) 能力,它使函数看起来像语言结构。例如:
with(car) {
startUp()
goToDestination()
}
这里with
看起来像是语言结构,但实际上它只是一个简单的函数,最后一个参数是lambda表达式。
这导致了一些优雅的事情,比如Kotlin HTML DSL
fold
函数的定义或理解它的作用? - OneCricketeerfold()
,第二个参数是一个函数(acc: R, nextElement: T) -> R
- https://kotlinlang.org/docs/reference/lambdas.html - OneCricketeeritems.fold(1, {...})
。 - OneCricketeer