Всякий раз, когда я передаю значение списка строк, я получаю сообщение об ошибке - PullRequest
0 голосов
/ 07 мая 2020
fun sayHello(greet:String,itemsToGreet:List<String>){
    itemsToGreet.forEach { itemsToGreet ->
        println("$greet, $itemsToGreet")
    }
}

fun main() {
    val interestingThings = listOf("kotlin","program","comic")
    sayHello(greet="hi", interestingThings)
}

1 Ответ

3 голосов
/ 07 мая 2020

Пара проблем:

  • Вы не можете смешивать именованные и позиционные аргументы в вызове метода. Это приводит к ошибке компиляции.
  • Хотя это и не является явным неправильным, тот факт, что вы затеняет переменную 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...