Sobes.tech
Middle+

Vai Value tips var saglabāt sevi? Un vai šis apgalvojums ir patiesība visiem value tipu pārstāvjiem?

sobes.tech AI

Atbilde no AI

Nē, vērtību tips tieši nevar saturēt paša piemēru. Mēģinājums definēt struktūrā vai enumerācijā lauku tāda paša tipa rezultēsies ar kompilācijas kļūdu, jo tas radīs bezgalīgu izmēru.

Tomēr vērtību tips var saturēt neobligātu paša piemēru (Self?), atsauci uz cita tipa piemēru (piemēram, caur klasi) vai izmantot indirection (ne tiešo) enumerācijās.

Tas attiecas uz visiem vērtību tipiem (struktūrām un enumerācijām).

Piemērs:

// Kompilācijas kļūda: vērtību tips nevar saturēt ne-optional īpašību sava tipa iekšienē
// struct MyStruct {
//     var myself: MyStruct
// }

// Variants ar opcionalu
struct MyStructWithOptional {
    var myself: MyStructWithOptional?
}

// Variants ar atsauci uz klasi
class MyClass {}
struct MyStructWithReference {
    var myReference: MyClass
}

// Variants ar indirect enum (ļauj rekursīvus gadījumus)
indirect enum MyEnum {
    case case1
    case case2(MyEnum)
}