Sobes.tech
Junior — Middle

Hogyan tárolódik az érték típusú value értéke, amikor bezárásban (closure) van?

sobes.tech MI

Válasz az MI-től

Swiftben, amikor egy értéktípusú értéket (például struct vagy primitív típusokat) fogunk elkapni egy closure-ben, akkor ennek az értéknek a másolatát hozzuk létre. Ez azt jelenti, hogy a closure saját másolatot tárol a változóról, és a külső változó módosításai a closure létrehozása után nem befolyásolják a closure belsejében lévő értéket.

Példa:

var x = 10
let closure = { print(x) }
x = 20
closure() // Kiírja az 10-et, mert az érték van elkapva, nem a referencia

Így az értéktípusú érték a closure-ben másolatként kerül tárolásra a létrehozás pillanatában.