Sobes.tech
Middle

Yapışdırıcılar necə value type növündəki dəyərləri ələ keçirə bilər?

sobes.tech Süni İntellekt

AI-dan cavab

Bağlamalar, bağlamanın təyin olunduğu anda dəyər növünün bir nüsxəsini ələ keçirir. Əgər dəyər növü bağlamadan sonra dəyişərsə, bağlamanın içində onun orijinal nüsxəsi mövcud olacaq, dəyişdirilmiş dəyər yox.

var counter = 0

let incrementCounter = { // Bağlama `counter`-in bir nüsxəsini ələ keçirir (0)
    counter += 1
    print(counter)
}

incrementCounter() // 1 çap edir
counter = 10 // Orijinal `counter` dəyişdirilir

incrementCounter() // 2 çap edir. Bağlama ələ keçirilmiş nüsxə ilə işləyir, dəyişdirilmiş dəyişən ilə yox.

@escaping ilə dəyər tipi bağlamalarından istifadə edərkən, bu nüsxə ələ keçirmə mexanizmini nəzərə almaq vacibdir, çünki dəyər çağırışdan əvvəl dəyişə bilər.