Ответ 1
Ключевое слово indirect
вводит слой косвенности за кулисами.
Вы указываете, что регистр перечисления является рекурсивным путем записи косвенных до него, что говорит компилятору вставить нужный слой косвенности.
От здесь
Важная часть структур и перечислений состоит в том, что они являются постоянными. Разрешить рекурсивные структуры или перечисления напрямую нарушали бы это, так как было бы неопределимое количество рекурсий, что делало бы размер неизменным и непредсказуемым. indirect
использует ссылку на постоянный размер для ссылки на структуру с постоянным размером.
Здесь есть два разных фрагмента кода.
-
Первая часть кода делает
BinaryTree<T>
сохраненной ссылкой везде, где она используется. -
Вторая часть кода делает
BinaryTree<T>
сохраненной ссылкой только в случаеnode
. То естьBinaryTree<T>
обычно имеет значение, хранящееся непосредственно, за исключением этого явноindirect
node
.