Middle+
O tipo Value pode armazenar a si mesmo? E essa afirmação é realmente verdadeira para todos os representantes dos tipos value?
sobes.tech IA
Resposta da IA
Não, o tipo de valor não pode diretamente conter uma instância de si mesmo. Tentar definir numa estrutura ou enumeração um campo do mesmo tipo resultará num erro de compilação, pois isso criaria um tamanho infinito.
No entanto, o tipo de valor pode conter uma instância opcional de si mesmo (Self?), uma referência a uma instância de outro tipo (por exemplo, através de uma classe) ou usar indireção (Indirect) em enumerações.
Isto é válido para todos os tipos de valor (estruturas e enumerações).
Exemplo:
// Erro de compilação: o tipo de valor não pode conter uma propriedade não opcional do seu próprio tipo
// struct MyStruct {
// var myself: MyStruct
// }
// Variante com opcional
struct MyStructWithOptional {
var myself: MyStructWithOptional?
}
// Variante com referência a uma classe
class MyClass {}
struct MyStructWithReference {
var myReference: MyClass
}
// Variante com indireção em enum (permite casos recursivos)
indirect enum MyEnum {
case case1
case case2(MyEnum)
}