Sobes.tech
Middle

Aký je rozdiel medzi kopírovaním poľa a štruktúr v Swift?

sobes.tech AI

Odpoveď od AI

Polia v Swift sú štruktúry (struct).

Pri kopírovaní poľa sa vytvorí nová kópia prvkov. Zmeny v jednom poli neovplyvnia druhé.

var array1 = [1, 2, 3]
var array2 = array1 // Dochádza ku kopírovaniu
array2[0] = 10
// array1 = [1, 2, 3]
// array2 = [10, 2, 3]

Štruktúry v Swift sú typy-hodnôt (value types). Pri priraďovaní alebo odovzdávaní štruktúry do funkcie sa vytvorí nová kópia dát. Zmeny v jednej kópii štruktúry neovplyvnia ostatné kópie.

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

var point1 = Point(x: 0, y: 0)
var point2 = point1 // Dochádza ku kopírovaniu
point2.x = 10
// point1.x = 0
// point2.x = 10

Rozdiel spočíva v tom, že polia, ako štruktúry, ukazujú správanie typu-hodnota pri kopírovaní, vytvárajúc úplnú kópiu svojich prvkov. Štruktúry všeobecne sú tiež typy-hodnôt a pri kopírovaní vytvárajú novú kópiu svojich vlastností. Preto platí pre obe entity (polia a štruktúry) semantika kopírovania podľa hodnoty (copy-by-value). Rozdiel je v tom, že pole je kontajner pre iné hodnoty, ktoré môžu byť ako typy-hodnôt, tak aj typy-odkazov.