Sobes.tech
Junior — Middle

Кадар аст, агар тағйирёбии навъи value, ки дар пӯшида гирифта шудааст, тағйир дода шавад ва ин пӯшида боз даъват карда шавад, чӣ натиҷаҳо ба вуҷуд меоянд?

sobes.tech AI

Ҷавоб аз AI

Дар Swift, агар тағйирёбандаи навъи арзиш (масалан, структура ё навъи primitives) дар як пӯшиш (closure) дастгирӣ шавад, он копияи ин тағйирёбандаро дар вақти эҷод кардан мегирад. Агар пас аз эҷоди пӯшиш тағйирёбандаи аслӣ тағйир ёбад, даъвати навбатии пӯшиш ҳамон копияро истифода мебарад, ки аввалин бор дастгирӣ шуда буд, ва на арзиши навсозишуда.

Ин маъно дорад, ки тағйиротҳои тағйирёбанда дар берун аз пӯшиш ба арзиши дарунӣ таъсир намерасонанд.

Масалан:

var x = 10
let closure = { print(x) }
x = 20
closure() // Натиҷа 10 хоҳад буд, на 20

Агар хоҳед, ки пӯшиш арзиши актуалии тағйирёбандаро бинад, бояд онро тавассути истинод (масалан, бо истифода аз синф ё параметрҳои inout) дастгирӣ кунед, ё пас аз тағйир додани тағйирёбанда, пӯшиши нав эҷод кунед.