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 anotherFuncnameegy 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 addGreetingAndPrintkí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.








