Ответ
Да, может. Это стандартная практика для композиции типов.
Пример:
struct Point {
var x: Double
var y: Double
}
struct Rectangle {
var origin: Point // Вложенная структура
var size: Point
}
Важные нюансы:
- Семантика копирования (Value Semantics): При копировании экземпляра
Rectangleкопируются и все его вложенные структуры (originиsize). - Запрет прямой рекурсии: Структура не может содержать свойство своего же типа, так как это создало бы бесконечный размер.
struct Node { // Ошибка компиляции: Value type 'Node' cannot have a stored property that recursively contains it var next: Node? } - Косвенная рекурсия: Для рекурсивных структур используйте
indirectс перечислениями (enum).indirect enum LinkedListNode { case value(Int, next: LinkedListNode?) }