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.