Вопрос проверяет знание рекурсивных перечислений и ключевого слова indirect.
indirect позволяет enum хранить рекурсивные значения. Используется для создания сложных структур данных вроде связных списков.
1. Пример без indirect (ошибка):
enum BinaryTree {
case leaf(Int)
case node(BinaryTree, BinaryTree) // Ошибка: рекурсивный тип
}2. С indirect:
indirect enum BinaryTree {
case leaf(Int)
case node(BinaryTree, BinaryTree) // Теперь работает
}3. Где использовать:
Деревья.
Связные списки.
Любые рекурсивные структуры.
Вывод:indirect добавляет гибкости, но требует больше памяти.