Junior — Middle
Чӣ гуна иҷрои функсияҳои умумӣ дар вақти компиликунии коди барнома амалӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Функсияҳои умумӣ дар вақти компилятсия тавассути механизми номидашуда "монофромизация" ё инстансикунии шаблонҳо коркард мешаванд. Ин маъно дорад, ки компилятор версияҳои мушаххасии функсияро барои ҳар навъе, ки бо он истифода мешавад, месозад.
Масалан, агар шумо функсияи умумиро дошта бошед:
func swapValues<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
Ва онро бо Int ва String даъват кунед, компилятор ду версияи функсияро месозад: яке барои Int ва дигаре барои String. Ин кӯмак мекунад, ки хароҷоти вақти иҷроӣ, ки бо типи динамикӣ алоқаманданд, пешгирӣ карда шаванд.
Дар баъзе забонҳо (масалан, Java), генерикҳо тавассути нобуд кардани навъҳо татбиқ мешаванд, дар ҳоле ки дар Swift тавассути монофромизация.