Sobes.tech
Middle+

Le type Value peut-il se contenir lui-même ? Et cette affirmation est-elle vraiment vraie pour tous les représentants des types value ?

sobes.tech IA

Réponse de l'IA

Non, le type de valeur ne peut pas directement contenir une instance de lui-même. Tenter de définir dans une structure ou une énumération un champ du même type entraînera une erreur de compilation, car cela créerait une taille infinie.

Cependant, le type de valeur peut contenir une instance optionnelle de lui-même (Self ?), une référence à une instance d’un autre type (par exemple, via une classe) ou utiliser l’indirection (Indirect) dans les énumérations.

Ceci est vrai pour tous les types de valeur (structures et énumérations).

Exemple :

// Erreur de compilation : le type de valeur ne peut pas contenir une propriété non optionnelle de son propre type
// struct MyStruct {
//     var myself: MyStruct
// }

// Variante avec optionnel
struct MyStructWithOptional {
    var myself: MyStructWithOptional?
}

// Variante avec référence à une classe
class MyClass {}
struct MyStructWithReference {
    var myReference: MyClass
}

// Variante avec indirect dans enum (permet des cas récursifs)
indirect enum MyEnum {
    case case1
    case case2(MyEnum)
}