Различия между циклами и вложенными циклами в котлине - PullRequest
0 голосов
/ 19 ноября 2018
fun main(args: Array<String>) {
    val books = arrayListOf("farenheit 451", "1984", "Altered Carbon", "dark matter", "Le probleme à trois corps")
    for (book in books) {
        if (book.contains('e')) {
            println(book)
        }
    }
}

Почему это печатает этот результат:

Фаренгейт 451
Измененный углерод
темная материя
Проблема "Корпус"

когда это:

fun main(args: Array<String>) {
    val books = arrayListOf("farenheit 451", "1984", "Altered Carbon", "dark matter", "Le probleme à trois corps")
    for (book in books) {
        if (book.contains('e')) {
            for(l in book){
                println(l)
            }
        }
    }
}

печатать каждый символ отдельно?

Я думаю, что знаю, но не уверен: Первый цикл будет проходить по каждому элементу, поэтому построчно печатайте названия книг.

в то время как во втором сценарии вложенный цикл повторяется по каждому символу каждого элемента

Я правильно понимаю?

1 Ответ

0 голосов
/ 19 ноября 2018

Да, вы абсолютно правы; books - это коллекция строк, тогда как book - это одиночная строка.

Поскольку вы не можете перебрать одну строку, вы вместо этого просите перебирать каждый отдельный символ (буква) строки.

Таким образом, вы будете перебирать книги, farenheit 451 пройдет условное, и, таким образом, l будет f, a, r и так далее для каждой итерации. 1984 будет пропущено, так как оно не пройдет условное, и не будет зациклено. Altered Carbon затем передаст условное выражение, поэтому каждый его символ будет зациклен.

...