Пара проблем:
- Вы не можете смешивать именованные и позиционные аргументы в вызове метода. Это приводит к ошибке компиляции.
- Хотя это и не является явным неправильным, тот факт, что вы затеняет переменную
itemsToGreet
в своем лямбда-выражении, является запахом кода.
Это исправляет оба:
fun sayHello(greet:String,itemsToGreet:List<String>) {
itemsToGreet.forEach { item -> // new variable name
println("$greet, $item")
}
}
fun main() {
val interestingThings = listOf("kotlin", "program", "comic")
sayHello("hi", interestingThings) // positional arguments
sayHello(greet="hi", itemsToGreet=interestingThings) // named arguments
}