Sobes.tech
Middle

Фарқи байни нусхагирии массив ва структураҳо дар Swift чист?

sobes.tech AI

Ҷавоб аз AI

Масивҳо дар Swift структураҳо (struct) мебошанд.

Ҳангоми нусхабардории массив, нусхаи нав аз унсурҳо сохта мешавад. Таҳрирҳо дар як массив ба дигар таъсир намерасонанд.

var array1 = [1, 2, 3]
var array2 = array1 // Нусхабардорӣ мешавад
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]

Структураҳо дар Swift навъҳои арзишӣ (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) татбиқ мешавад. Фарқ дар он аст, ки массив як контейнер барои арзишҳои дигар аст, ки метавонанд ҳам навъҳои арзишӣ ва ҳам навъҳои истинодӣ бошанд.