Sobes.tech
Middle

Bir yapıda, bu yapının kendisiyle aynı türde bir alan ilan edilemez neden?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'teki yapılar (structs), değer tipleri (value types)dır. Bir yapının örneği oluşturulduğunda, tüm alanları için bellek ayrılır. Bir yapı, aynı türde bir alan içerebilecek olursa, bu yapının boyutu sonsuz olurdu, çünkü içinde aynı yapının başka bir örneği için yer gerekirdi ve bu da sonsuza kadar devam ederdi. Bu, döngüsel bağımlılığa yol açar ve yapının son boyutunun belirlenmesini imkansız hale getirirdi.

Yapıların aksine, sınıflar (classes) referans tipleridir (reference types). Bir sınıf alanı, aynı sınıfın bir örneğine referans tutabilir. Alan, yalnızca sınıf örneğinin bellek adresini tutar, kendisini değil, bu nedenle sınıfın boyutunu belirlerken, örneğin tam boyutunu bilmek gerekmez. Referanslar sabit boyuttadır.

Yapılarla ilgili sorunu gösteren örnek:

// Bu yapı derlenemez
// struct Node {
//     var value: Int
//     var next: Node? // Hata! Yapı, 'Node' türünde bir alan içerebilir
// }

Benzer sorunları çözmek için, yapılarla dolaylı referanslar kullanılabilir, örneğin protokoller veya kapanışlar (closures) aracılığıyla veya sınıflar kullanılabilir. Tipik bir örnek, genellikle sınıflarla uygulanan bağlı listelerdir.