Middle+
Tudja a Value típus önmagát tárolni? És valóban igaz ez az állítás minden value-típus képviselőjére?
sobes.tech MI
Válasz az MI-től
Nem, az értéktípus közvetlenül nem tartalmazhat saját példányt. Egy struktúrában vagy enumerációban ugyanilyen típusú mező definiálása fordítási hibát eredményez, mivel ez végtelen méretet hozna létre.
Azonban az értéktípus tartalmazhat opcionális példányt saját magáról (Self?), hivatkozást egy másik típus példányára (például osztályon keresztül), vagy használhatja az indirection (Indirect) módszert enumerációkban.
Ez minden értéktípusra (struktúrákra és enumerációkra) igaz.
Példa:
// Fordítási hiba: az értéktípus nem tartalmazhat nem- opcionális saját típusú tulajdonságot
// struct MyStruct {
// var myself: MyStruct
// }
// Opcióssal variáció
struct MyStructWithOptional {
var myself: MyStructWithOptional?
}
// Osztályreferenciával variáció
class MyClass {}
struct MyStructWithReference {
var myReference: MyClass
}
// Indirection-nel enumban variáció (rekurzív eseteket engedélyez)
indirect enum MyEnum {
case case1
case case2(MyEnum)
}