Swift-də massiv və strukturları kopyalamaq arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də massivlər (arrays) strukturlardır (struct).
Massivin surətini çıxardanda, elementlərin yeni surəti yaradılır. Bir massivdə edilən dəyişikliklər digərinə təsir etmir.
var array1 = [1, 2, 3]
var array2 = array1 // Surət çıxarılır
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]
Swift-də strukturlar (struct) dəyər tipləridir (value types). Bir strukturu təyin etdiyinizdə və ya funksiyaya ötürdüyünüzdə, məlumatların yeni surəti yaradılır. Bir strukturu surətləyən zaman, onun dəyişiklikləri digər surətləri təsir etmir.
struct Point {
var x: Int
var y: Int
}
var point1 = Point(x: 0, y: 0)
var point2 = point1 // Surət çıxarılır
point2.x = 10
// point1.x = 0
// point2.x = 10
Fərq ondadır ki, massivlər, strukturlar kimi, surətlənəndə dəyər tipli davranış göstərir və elementlərinin tam surətini yaradır. Ümumiyyətlə, strukturlar da dəyər tipləridir və surətlənəndə, onların xüsusiyyətlərinin yeni surətini yaradırlar. Buna görə, hər iki varlıq (massivlər və strukturlar) üçün copy-by-value (dəyər ilə surət) semantikasına əməl olunur. Fərq odur ki, massiv digər dəyərləri saxlayan konteynerdir və həm dəyər, həm də istinad tipli ola bilər.