Sobes.tech
Middle+

Que se passera-t-il si dans la propriété d'une structure, on indique la même structure?

sobes.tech IA

Réponse de l'IA

Компилятор выдаст ошибку, потому что структура является типом значения и хранится на стеке. Размер структуры должен быть известен на этапе компиляции. Указание в структуре свойства того же типа создаст бесконечную рекурсивную зависимость размеров.

struct Node {
    var value: Int
    var next: Node // Error: Value type 'Node' cannot have a stored property that references itself
}

Чтобы избежать этой проблемы, можно использовать reference type (класс), который хранится в куче и представляет собой ссылку, размер которой фиксирован.

class Node {
    var value: Int
    var next: Node? // Optional для обозначения конца списка
}

Или использовать enum с indirect case, что позволяет использовать рекурсивные типы значений.

enum LinkedList {
    case node(Int, indirect LinkedList)
    case end
}