Последний аргумент лямбды в Kotlin
Когда лямбда - последний аргумент функции, её можно писать после закрывающей скобки вызова. Такой прием называют trailing lambda:
fun withPrefix(prefix: String, block: () -> Unit) {
print("$prefix: ")
block()
}
withPrefix("log") {
println("saved")
}
Запись с лямбдой снаружи скобок эквивалентна передаче её последним аргументом внутри скобок:
fun mapValue(n: Int, transform: (Int) -> Int): Int {
return transform(n)
}
println(mapValue(5) { it * 10 })
println(mapValue(5, { it * 10 }))
Если после лямбды других аргументов нет,
пустые скобки у вызова иногда можно
опустить - как у repeat:
repeat(2) {
println("step")
}
Напишите функцию onReady с одной
лямбдой () -> Unit. Вызовите её,
передав блок за скобками, который выводит
"ready".
Напишите функцию formatNum: целое
и лямбда (Int) -> String. Вызовите
с числом 12 и блоком снаружи
скобок, который возвращает строку
"n=12".