Middle
Kas standardmassiivide kogud on väärtuse ja viidetüübid?
sobes.tech AI
Vastus AI-lt
Swift-да (Array) массивите (Array) са структури (struct), а структурите са типове стойност (Value Types). При присвояване или предаване на масив, се създава негово копие.
Въпреки това, за оптимизация на производителността, системата за копиране на масиви използва поведение Copy-on-Write. Това означава, че реалното копиране на данните на масива се случва само при първата модификация на една от копиите. До тогава и двете копия споделят една и съща памет за данни.
Типове стойност: Struct, Enum, Int, String, Double, Bool. Типове препратка: Class, Function, Closure.
Пример, който илюстрира Copy-on-Write:
var initialArray = [1, 2, 3]
var copiedArray = initialArray // Все още няма реално копие на данните
print(initialArray[0]) // 1
print(copiedArray[0]) // 1
copiedArray[0] = 10 // Тук се случва реалното копие на данните
print(initialArray[0]) // 1 (оригиналният масив не е променен)
print(copiedArray[0]) // 10 (само копираната версия е променена)