Sobes.tech
Middle

Чӣ гуна пӯшидаҳо метавонанд арзишҳои навъи value type-ро дастгирӣ кунанд?

sobes.tech AI

Ҷавоб аз AI

Затварялар, затваряны аныктоо учурундагы value тибиндеги маанинин көчүрмөсүн түшүрүп алат. Эгер value тибиндеги мааниси затваряны аныктоо кийин өзгөрсө, анда затварянын ичинде анын оригинал көчүрмөсү болот, өзгөртүлгөн мааниси эмес.

var counter = 0

let incrementCounter = { // Затваря `counter`нин көчүрмөсүн түшүрүп алат (0)
    counter += 1
    print(counter)
}

incrementCounter() // 1 деп чыгат
counter = 10 // Orijinal `counter` өзгөртүлөт

incrementCounter() // 2 деп чыгат. Затваря уюлдук көчүрмөсү менен иштейт, өзгөртүлгөн өзгөрмө менен эмес.

@escaping менен value түрүндөгү затварялар колдонулганда, бул көчүрмө алуу механизмин эске алынган маанилүү, анткени мааниси затваря чакырылышынын алдында өзгөрүшү мүмкүн.