Для начала хочу сказать, что я знаю, что в SO есть много статей и вопросов, которые ссылаются на indirect
ключевое слово в Swift.
Наиболее популярным объяснением использования indirect
является учет рекурсивных перечислений.
Вместо того, чтобы просто знать о том, что indirect
позволяет нам делать, я хотел бы знать, как оно позволяет нам использовать рекурсивные перечисления.
Вопросы:
Это потому, что перечисления являются типами значений, а типы значений плохо масштабируются, если они построены в рекурсивной структуре? Зачем?
Изменяет ли indirect
поведение типа значения поведение, чтобы оно больше походило на ссылочный тип?
Следующие два примера компилируются просто отлично. В чем разница?
indirect enum BinaryTree<T> {
case node(BinaryTree<T>, T, BinaryTree<T>)
case empty
}
enum BinaryTree<T> {
indirect case node(BinaryTree<T>, T, BinaryTree<T>)
case empty
}