Sobes.tech
Middle+

Může typ Value sám sebe uchovávat? A je toto tvrzení pravdivé pro všechny zástupce typů value?

sobes.tech AI

Odpověď od AI

Ne, typ hodnoty nemůže přímo obsahovat vlastní instanci. Pokus o definici v struktuře nebo enumu pole stejného typu povede k chybě při kompilaci, protože by to vytvořilo nekonečnou velikost.

Nicméně, typ hodnoty může obsahovat volitelnou instanci sebe sama (Self?), odkaz na instanci jiného typu (například přes třídu) nebo používat indirekci (Indirect) v enumech.

To platí pro všechny typy hodnot (struktury a enumy).

Příklad:

// Chyba při kompilaci: typ hodnoty nemůže obsahovat nenastavenou vlastnost vlastního typu
// struct MyStruct {
//     var myself: MyStruct
// }

// Varianta s volitelným
struct MyStructWithOptional {
    var myself: MyStructWithOptional?
}

// Varianta s odkazem na třídu
class MyClass {}
struct MyStructWithReference {
    var myReference: MyClass
}

// Varianta s indirekcí v enumu (umožňuje rekurzivní případy)
indirect enum MyEnum {
    case case1
    case case2(MyEnum)
}