#arrays #swift
#массивы #swift
Вопрос:
как выполнить итерацию по этой переменной, где у sub может быть еще 10 подмассивов, например.?
struct Struct {
let title: String
let sub: [Struct]?
}
let variable = Struct(
title: "1",
sub: [
Struct(title: "1.1", sub: nil),
Struct(title: "1.2", sub: [
Struct(title: "1.2.1", sub: nil),
Struct(title: "1.2.2", sub: [
Struct(title: "1.2.2.1", sub: nil)
])
])
]
)
Комментарии:
1. Главное, что мои
display
вызовыchildren.map { $0.display }
. Если каждый узел печатает и сообщает своим дочерним элементам печатать, вы напечатали их все.
Ответ №1:
Это довольно просто. Рекурсия. Допустим, мы просто хотим напечатать все заголовки. Представьте себе метод, в котором узел печатает свой заголовок, а затем вызывает один и тот же метод для каждого из своих дочерних элементов. По определению, если вы вызываете этот метод на корневом узле, теперь вы напечатали все заголовки. Минимальная реализация (не беспокоясь о порядке посещения или формате вывода) будет:
func output() {
print(title)
self.sub?.forEach { $0.output() }
}