Swift'te bir diziyi ve yapıları kopyalamak arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Swift'teki diziler (arrays) yapılar (struct)dır.
Bir dizi kopyalandığında, öğelerin yeni bir kopyası oluşturulur. Bir dizideki değişiklikler diğerini etkilemez.
var array1 = [1, 2, 3]
var array2 = array1 // Kopyalama gerçekleşir
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]
Swift'teki yapılar (struct) değer tipleridir (value types). Bir yapıyı atadığınızda veya bir fonksiyona geçtiğinizde, verilerin yeni bir kopyası oluşturulur. Bir yapının kopyası üzerinde yapılan değişiklikler diğer kopyaları etkilemez.
struct Point {
var x: Int
var y: Int
}
var point1 = Point(x: 0, y: 0)
var point2 = point1 // Kopyalama gerçekleşir
point2.x = 10
// point1.x = 0
// point2.x = 10
Fark, dizilerin yapılar olması nedeniyle kopyalama sırasında değer tipi davranışını göstermeleri ve öğelerinin tam bir kopyasını oluşturmalarıdır. Yapılar genellikle de değer tipleridir ve kopyalandıklarında özelliklerinin yeni bir kopyasını oluştururlar. Bu nedenle, her iki varlık (diziler ve yapılar) için de copy-by-value (değer ile kopyalama) semantiği geçerlidir. Fark, dizinin diğer değerleri tutan bir konteyner olmasıdır; bunlar hem değer tipleri hem de referans tipleri olabilir.