Selles artiklis saate tutvuda Swifti sisestatud funktsioonidega ja kuidas see toimib koos näidetega.
Kui funktsioon on mõne muu funktsiooni kehas, nimetatakse seda pesastatud funktsiooniks.
Pesastatud funktsiooni süntaks
func funcname () (// välise funktsiooni avaldused func anotherFuncname () (// sisefunktsiooni avaldused))
Siin on funktsioon anotherFuncname
mõne muu funktsiooni kehas funcname
.
Tuleb märkida, et sisemisi funktsioone saab kutsuda ja kasutada ainult ümbritseva funktsiooni sees (välimine funktsioon).
Näide 1: Pesastatud funktsioon ilma tagastusväärtusteta
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Programmi käivitamisel on väljund järgmine:
Tere! Jack
Ülaltoodud programmis addGreetingAndPrint()
kutsutakse pesastatud funktsiooni ümbritsevast funktsioonist outputMessageByGreeting()
.
Avaldus outputMessageByGreeting("Jack")
kutsub välimist funktsiooni. Ja addGreetingAndPrint()
välise funktsiooni sees olev lause kutsub meetodit, mis väljastab Tere! Jack konsoolis.
Funktsiooni ei saa helistada addGreetingAndPrint
väljaspool funktsiooni outputMessageByGreeting
.
Näide 2: Pesastatud funktsioon koos parameetrite ja tagastusväärtustega
Pesastatud funktsioonid võivad sisaldada parameetrite ja tagastusväärtustega funktsioone.
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)
Programmi käivitamisel on väljund järgmine:
5
Ülaltoodud programmis
- välimine funktsioon on
operate()
koos funktsiooni tagastatava väärtusega(Int,Int) -> Int
. - ja sisemised (pesastatud) funktsioonid on
add()
jasubtract()
.
Astmeline funktsioon add()
ja subtract()
nii on kasutatud väljaspool ümbritseva funktsiooni operate()
. See on võimalik, kuna välimine funktsioon tagastab ühe neist funktsioonidest.
Oleme kasutanud sisemist funktsiooni väljaspool sulgemisfunktsiooni operate()
nagu operation(2, 3)
. Programm kutsub sisemiselt välja, add(2, 3)
mis väljendab konsoolis 5.