Ebben a cikkben megismerheti a Swift beágyazott funkcióit és működését példákkal.
Ha egy függvény létezik egy másik függvény testében, akkor beágyazott függvénynek hívjuk.
Beágyazott függvény szintaxisa
func funcname () (// a külső függvény utasításai func anotherFuncname () (// belső függvény utasításai))
Itt a függvény anotherFuncname
egy másik függvény testében van funcname
.
Meg kell jegyezni, hogy a belső funkciókat csak a bezáró függvény (külső funkció) belsejében lehet meghívni és használni.
1. példa: Beágyazott függvény visszatérési értékek nélkül
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
A program futtatásakor a kimenet a következő lesz:
Szia! Jack
A fenti programban a beágyazott függvényt addGreetingAndPrint()
a mellékelő függvényből hívják meg outputMessageByGreeting()
.
Az utasítás outputMessageByGreeting("Jack")
meghívja a külső függvényt. És a addGreetingAndPrint()
külső függvényen belüli utasítás meghívja a Helló! Jack a konzolban.
A függvényt nem hívhatja a függvényen addGreetingAndPrint
kívül outputMessageByGreeting
.
2. példa: Beágyazott függvény paraméterekkel és visszatérési értékekkel
A beágyazott függvények paramétereket és visszatérési értékeket tartalmazó függvényeket tartalmazhatnak.
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)
A program futtatásakor a kimenet a következő lesz:
5.
A fenti programban
- a külső függvény a
operate()
Function típusú visszatérő értékkel rendelkezik(Int,Int) -> Int
. - a belső (beágyazott) funkciók pedig
add()
éssubtract()
.
A beágyazott függvény add()
és subtract()
olyan módon használják kívül a befoglaló függvény operate()
. Ez azért lehetséges, mert a külső függvény visszaadja ezen funkciók egyikét.
Már használják a belső függvény külső befoglaló függvény operate()
a operation(2, 3)
. A program belsőleg hívja meg, add(2, 3)
amely 5-öt ad ki a konzolból.