Junior
Mida tähendab, et lingid salvestatakse virna?
sobes.tech AI
Vastus AI-lt
Kohaliku väärtusmuutujad (liigid Int, Bool, Double, String, Struct, Enum), mis luuakse funktsiooni sees, salvestatakse virnale. Värin on mäluala, mida kasutatakse kohalike muutujate, funktsiooni parameetrite ja tagasipöördumisaadresside jaoks. See töötab LIFO (Last In, First Out) põhimõttel.
Tööpõhimõte:
- Paigutamine: Kui funktsioon kutsutakse, luuakse virna raam. Selle funktsiooni kohalikud väärtusmuutujad paigutatakse sellesse raamisse.
- Juurdepääs: Juurdepääs virna muutujatele on väga kiire, kuna nende aadressid määratakse suhteliselt virna näidiku suhtes.
- Vabastamine: Kui funktsioon lõpetab täitmise, eemaldatakse selle virna raam (ja kõik selles salvestatud muutujad) lihtsalt virna ülaosast.
Näide:
func processNumbers() {
var number1: Int = 10 // number1 salvestatakse virnale
let number2: Double = 20.5 // number2 salvestatakse virnale
// ... number1 ja number2 kasutamine
} // Kui väljutate funktsioonist processNumbers, eemaldatakse number1 ja number2 virnast
Erinevalt viidetüüpidest (Class, Actor), mille eksemplarid salvestatakse virnale, salvestatakse viide sellele eksemplarile virnale.