Sobes.tech
Junior — Middle

Hogyan történik az általános funkciók végrehajtása a programkód fordítása során?

sobes.tech MI

Válasz az MI-től

A generikus függvények a fordítás során egy olyan mechanizmussal kerülnek feldolgozásra, amit "monomorfizációnak" vagy sablon-instanciálásnak neveznek. Ez azt jelenti, hogy a fordító minden használt típushoz konkrét verziókat hoz létre.

Például, ha van egy generikus függvényed:

func swapValues<T>(_ a: inout T, _ b: inout T) {
    let temp = a
    a = b
    b = temp
}

És ezt Int és String típusokkal hívod meg, a fordító két verziót generál: egyet az Int-hez és egyet a String-hez. Ez segít elkerülni a dinamikus típusozásból adódó futási költségeket.

Néhány nyelvben (pl. Java) a generikusokat típuseltörésen keresztül valósítják meg, míg Swiftben a monomorfizáció révén.