Liektas funkcijas ātri (ar piemēriem)

Š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 anotherFuncnameatrodas 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()un subtract().

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()operation(2, 3). Programma iekšēji izsauc add(2, 3)5, kas konsolē izvada 5.

Interesanti raksti...