Отображение нескольких значений для оператора в Swift - PullRequest
0 голосов
/ 24 сентября 2019

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

let treeArray = ["Pine", "Oak", "Yew", "Maple", "Birch", "Myrtle"]

    for tree in treeArray {
    print(tree)
}

Я хочу иметь возможность печатать три переменные в одном цикле, чтобы код выводил

Pine Oak Yew в одну строку

Maple Birch Myrtle ина следующий

Вместо

Pine
Oak
Yew
Maple
Birch
Myrtle

Спасибо!

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Вы можете использовать .enumerated(), чтобы связать индекс с элементом, а затем print(_:terminator:), используя index % 3, чтобы выбрать соответствующий терминатор (перевод строки "\n" или пробел " "):

let treeArray = ["Pine", "Oak", "Yew", "Maple", "Birch", "Myrtle"]

for (index, tree) in treeArray.enumerated() {
    print(tree, terminator: index % 3 == 2 ? "\n" : " ")
}

Вывод:

Pine Oak Yew
Maple Birch Myrtle

Общий случай: печать n элементов в строке

Как правило, для печати n элементов в строке:

print(tree, terminator: index % n == n - 1 ? "\n" : " ")

или эквивалентно:

print(tree, terminator: (index + 1) % n == 0 ? "\n" : " ")

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

print(tree, terminator: index % n == n - 1 || index == treeArray.endIndex - 1 ? "\n" : " ")
0 голосов
/ 24 сентября 2019

Используйте массив для хранения деревьев и

joined(separator: String)

в массиве, чтобы соединить их вместе.

let treeArray = ["Pine", "Oak", "Yew", "Maple", "Birch", "Myrtle"]

var treeNames = [String]()
for (count, tree) in treeArray.enumerated() {
    treeNames.append(tree)
    if ((count + 1) % 3) == 0 {
        let treeLine = treeNames.joined(separator: " ")
        print(treeLine)
        treeNames.removeAll()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...