Šiame straipsnyje sužinosite apie „Swift“ įdėtąsias funkcijas ir kaip tai veikia su pavyzdžiais.
Jei funkcija egzistuoja kitos funkcijos kūne, ji vadinama įdėta funkcija.
Įterptosios funkcijos sintaksė
func funcname () (// išorinės funkcijos teiginiai func anotherFuncname () (// vidinės funkcijos teiginiai))
Čia funkcija anotherFuncname
yra kitos funkcijos kūno viduje funcname
.
Reikėtų pažymėti, kad vidines funkcijas galima iškviesti ir naudoti tik uždarymo funkcijos (išorinės funkcijos) viduje.
1 pavyzdys: įdėta funkcija be grąžinimo verčių
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Kai paleisite programą, išvestis bus:
Sveiki! Domkratas
Pirmiau pateiktoje programoje įdėta funkcija addGreetingAndPrint()
iškviečiama iš uždarymo funkcijos outputMessageByGreeting()
.
Teiginyje outputMessageByGreeting("Jack")
iškviečiama išorinė funkcija. addGreetingAndPrint()
Išorinės funkcijos viduje esantis sakinys iškviečia metodą, kuris išduoda Sveiki! Džekas konsolėje.
Negalite iškviesti funkcijos addGreetingAndPrint
už funkcijos ribų outputMessageByGreeting
.
2 pavyzdys: įdėta funkcija su parametrais ir grąžinimo reikšmėmis
Įdėtose funkcijose gali būti funkcijos su parametrais ir grąžinimo reikšmėmis.
func operate(with symbol:String) -> (Int, Int) -> Int ( func add(num1:Int, num2:Int) -> Int ( return num1 + num2 ) func subtract(num1:Int, num2:Int) -> Int ( return num1 - num2 ) let operation = (symbol == "+") ? add : subtract return operation ) let operation = operate(with: "+") let result = operation(2, 3) print(result)
Kai paleisite programą, išvestis bus:
5
Pirmiau pateiktoje programoje
- išorinė funkcija yra
operate()
su funkcijos grąžinimo verte(Int,Int) -> Int
. - o vidinės (įdėtos) funkcijos yra
add()
irsubtract()
.
Įdėtos funkcijos add()
ir subtract()
tokiu būdu yra naudojami už dengiančiosios funkcija operate()
. Tai įmanoma, nes išorinė funkcija grąžina vieną iš šių funkcijų.
Vidinę funkciją naudojome už uždarymo funkcijos operate()
kaip operation(2, 3)
. Programa vidiniu ryšiu paskambina add(2, 3)
iš konsolės 5.