Sobes.tech
Middle

Swift-ში მასივისა და სტრუქტურების კოპირების შორის რა განსხვავებაა?

sobes.tech AI

პასუხი AI-სგან

Swift-те массивдер (arrays) структуралар (struct) болуп саналат.

Массивди көчүргөндө, анын элементтеринин жаңы көчүрмөсү түзүлөт. Бир массивдеги өзгөртүүлөр башкасына таасир этпейт.

var array1 = [1, 2, 3]
var array2 = array1 // Көчүрүү жүргүзүлөт
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]

Swiftтеги структуралар (struct) баалуулук түрлөрү (value types) болуп саналат. Структураны белгилөө же функцияга өткөргөндө, маалыматтардын жаңы көчүрмөсү түзүлөт. Бир структуранын көчүрмөсүндөгү өзгөртүүлөр башка көчүрмөлөргө таасир этпейт.

struct Point {
    var x: Int
    var y: Int
}

var point1 = Point(x: 0, y: 0)
var point2 = point1 // Көчүрүү жүргүзүлөт
point2.x = 10
// point1.x = 0
// point2.x = 10

Атайын айырмасы — массивдер, структуралар сыяктуу, көчүрүлгөндө, баалуулук-типтин жүрүм-турумун көрсөтүп, өзүнүн элементтеринин толук көчүрмөсүн түзөт. Жалпысынан структуралар да баалуулук-типтер жана көчүрүлгөндө, алардын өзгөчөлүктөрүнүн жаңы көчүрмөсүн түзөт. Ошентип, эки объект үчүн (массивдер жана структуралар) copy-by-value (баалуулук аркылуу көчүрүү) семантикасы колдонулат. Айырмасы — массив башка маанилерди сактаган контейнер болуп, ал да, баалуулук жана шилтемелүү түрлөр болушу мүмкүн.