fun lazyProperty(initializer:() -> Int): Int {
val result: Lazy<Int> = lazy(initializer)
return result.value
}
fun main(args: Array<String>) {
// 1.
val bar: Int = lazyProperty({ 1 + 1 })
// 2.
val foo: Int = lazyProperty() {
42
}
println("bar $bar, foo: $foo")
}
Ich stolperte vor kurzem über die Syntax eine Funktion in Kotlin Aufruf und ich kann es einfach nicht bekommen: die Faust Option ist klar - es ist ein Lambda ist, aber die zweite sieht nicht wie eine übliche Syntax zum Aufruf einer Funktion mit dem erforderlichen Parameter aus. Die Klammern, in denen normalerweise Parameter platziert werden sollen, sind leer und stattdessen kommt der Funktionsparameter im Körper des Aufrufers! Wie ist es möglich und wozu wird es benötigt?Kotlin: Function-param Implementierung in einem Körper eines Anrufers
Beachten Sie auch, dass, wenn eine Funktion nur einen einzigen Funktionsparameter hat, können die Klammern weggelassen werden: 'lazyProperty {42}' – hotkey