Не понимаю, почему работает этот код на kotlin
Есть простой код на kotlin:
fun repeat(
times: Int,
action: (Int) -> Unit // [1]
) {
for (index in 0 until times) {
action(index) // [2]
}
}
fun my(){
println("xxx")
}
fun main() {
repeat(3) { my() }
}
Объясните, почему main() печатает:
xxx
xxx
xxx
Ведь, вроде бы, функция repeat требует, чтобы последний lambda-параметр принимал Int на вход, а у меня функция my определена вообще без параметров...
Ответы (1 шт):
Автор решения: Eugene Krivenja
→ Ссылка
my()
не передается как action
. action
в вашем случае это { my() }
.
Чтобы передать именно my()
как action
придется добавить параметр и передать ссылку на функцию.
fun my(i: Int){
println("xxx - $i")
}
fun main() {
repeat(3, ::my)
}
Вывод будет:
xxx - 0
xxx - 1
xxx - 2