Swift'de İç İçe İşlevler (Örneklerle)

Bu makalede, Swift'deki yuvalanmış işlevler ve örneklerle nasıl çalıştığı hakkında bilgi edineceksiniz.

Başka bir işlevin gövdesinde bir işlev varsa, buna iç içe işlev denir.

İç içe geçmiş bir işlevin sözdizimi

 func funcname () (// dış fonksiyonun ifadeleri func anotherFuncname () (// iç fonksiyonun ifadeleri)) 

Burada işlev anotherFuncname, başka bir işlevin gövdesinin içindedir funcname.

İç işlevlerin yalnızca çevreleyen işlevin (dış işlev) içinde çağrılabileceği ve kullanılabileceği unutulmamalıdır.

Örnek 1: Dönüş değerleri olmayan iç içe geçmiş işlev

 func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack") 

Programı çalıştırdığınızda, çıktı:

Merhaba! Jack

Yukarıdaki programda, iç içe geçmiş işlev addGreetingAndPrint(), çevreleyen işlevden çağrılmaktadır outputMessageByGreeting().

İfadesi outputMessageByGreeting("Jack")dış işlevini çağırır. Ve addGreetingAndPrint()dış fonksiyonun içindeki ifade, Hello! Konsolda jack .

İşlevi, işlevin addGreetingAndPrintdışında çağıramazsınız outputMessageByGreeting.

Örnek 2: Parametreler ve dönüş değerleri olan iç içe geçmiş işlev

İç içe geçmiş işlevler, parametreleri ve dönüş değerleri olan işlevler içerebilir.

 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) 

Programı çalıştırdığınızda, çıktı:

 5

Yukarıdaki programda,

  • dıştaki işlev, operate()İşlev türünün dönüş değeri ile (Int,Int) -> Int.
  • ve iç (iç içe geçmiş) işlevler add()ve subtract().

İç içe geçmiş işlev add()ve subtract()bir şekilde çevreleyen işlevin dışında kullanılıyor operate(). Bu mümkündür çünkü dış işlev bu işlevlerden birini döndürür.

İç işlevi, çevreleyen işlevin dışındaki operate()olarak kullandık operation(2, 3). Program dahili add(2, 3)olarak konsolda çıkan 5'i çağırır .

Ilginç makaleler...