В какой-то тренировке, которую я рассматриваю, я не совсем понимаю, как пример функции высшего порядка и лямбда связаны через синтаксис
Эта функция Котлина высшего порядка
fun myWith(name: String, block: String.() -> Unit) {
name.block()
}
вызывается вот так
myWith(fish.name) {
capitalize()
}
Я понимаю, что вторая часть - лямбда, но я не понимаю, почему она не включена в качестве второго параметра в функцию и просто повисла вне параметров. Например, почему он не вызывается как:
myWith(fish.name, { capitalize() } )
Позже более подробное описание примера будет показано как
myWith(fish.name, object : Function1<String, Unit> {
override fun invoke(name: String) {
name.capitalize()
}
})
Что включает в себя лямбду внутри нормального списка параметров до myWith