Šajā rakstā jūs uzzināsit par Swift ligzdotajām funkcijām un kā tā darbojas, izmantojot piemērus.
Ja funkcija pastāv citas funkcijas ķermenī, to sauc par ligzdotu funkciju.
Ligzdotas funkcijas sintakse
func funcname () (// ārējās funkcijas paziņojumi func anotherFuncname () (// iekšējās funkcijas paziņojumi))
Šeit funkcija anotherFuncname
atrodas citas funkcijas ķermenī funcname
.
Jāatzīmē, ka iekšējās funkcijas var izsaukt un izmantot tikai norobežojošās funkcijas iekšpusē (ārējā funkcija).
1. piemērs: ligzdota funkcija bez atgriešanās vērtībām
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Palaidot programmu, izeja būs:
Sveiki! Džeks
Iepriekš minētajā programmā ligzdotā funkcija addGreetingAndPrint()
tiek izsaukta no pievienojošās funkcijas outputMessageByGreeting()
.
Paziņojums outputMessageByGreeting("Jack")
izsauc ārējo funkciju. addGreetingAndPrint()
Ārējās funkcijas iekšējais paziņojums izsauc metodi, kas izsniedz Sveiki! Džeks konsolē.
Funkciju nevar izsaukt addGreetingAndPrint
ārpus funkcijas outputMessageByGreeting
.
2. piemērs: ligzdota funkcija ar parametriem un atgriešanās vērtībām
Ligzdotās funkcijas var saturēt funkcijas ar parametriem un atgriešanās vērtībām.
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)
Palaidot programmu, izeja būs:
5
Iepriekš minētajā programmā
- ārējā funkcija ir
operate()
ar Funkcijas atgriešanās vērtību(Int,Int) -> Int
. - un iekšējās (ligzdotās) funkcijas ir
add()
unsubtract()
.
Ligzdotu funkciju add()
un subtract()
tādā veidā tiek izmantoti ārpus norobežojošās funkcijas operate()
. Tas ir iespējams, jo ārējā funkcija atgriež vienu no šīm funkcijām.
Mēs izmantojām iekšējo funkciju ārpus norobežojošās funkcijas operate()
kā operation(2, 3)
. Programma iekšēji izsauc add(2, 3)
5, kas konsolē izvada 5.