Sobes.tech
Middle

Sú štandardné kolekcie polí typmi hodnôt a referenčnými typmi?

sobes.tech AI

Odpoveď od AI

Polia (Array) v jazyku Swift sú štruktúry (struct), a štruktúry sú typy hodnôt (Value Types). Pri priraďovaní alebo odovzdávaní poľa sa vytvorí jeho kópia.

Avšak, na optimalizáciu výkonu, systém kopírovania poľa má správanie Copy-on-Write. To znamená, že skutočná kópia dát poľa nastáva až pri prvej úprave jednej z kópií. Do tej doby obe kópie zdieľajú rovnaké uloženie dát.

Typy hodnôt: Struct, Enum, Int, String, Double, Bool. Typy odkazov: Class, Function, Closure.

Príklad, ktorý ilustruje Copy-on-Write:

var initialArray = [1, 2, 3]
var copiedArray = initialArray // Ešte nemá skutočnú kópiu dát

print(initialArray[0]) // 1
print(copiedArray[0])  // 1

copiedArray[0] = 10     // Tu dochádza ku skutočnej kópii dát

print(initialArray[0]) // 1 (pôvodný pole sa nezmenil)
print(copiedArray[0])  // 10 (len skopírovaná verzia sa zmenila)