Published on

Swiftda ichma-ich funksiyalar (Nested Functions)

Authors

Swiftda bir funksiya ichida boshqa funksiya bo'lishi mumkin. Bunday funksiyalar ichma-ich funksiyalar (nested functions) deb ataladi.

Ichma-ich funksiyalarni o'rganishdan oldin Swift funksiyalari bilan tanish bo'lish tavsiya etiladi.

Ichma-ich funksiyaning sintaksisi

Swiftda ichma-ich funksiya quyidagicha yaratiladi:

// tashqi funksiya
func function1() {
  // kod

  // ichki funksiya
  func function2() {
    // kod
  }

}

Bu yerda function2() funksiyasi tashqi funksiya function1() ichida joylashgan.

Misol:

Swift
Ichma-ich funksiya
// tashqi funksiya func greetMessage() { // ichki funksiya func displayName() { print("Good Morning Abraham!") } // ichki funksiyani chaqirish displayName() } // tashqi funksiyani chaqirish greetMessage()

Yuqoridagi misolda biz ikki funksiya yaratdik:

  • greetMessage() β€” oddiy tashqi funksiya
  • displayName() β€” ichki funksiya (tashqi funksiya ichida joylashgan)

Bu yerda ichki funksiya displayName() tashqi funksiya ichida chaqirilmoqda.

Agar biz ichki funksiyani tashqi funksiyadan tashqarida chaqirmoqchi bo'lsak, xato keladi: use of unresolved identifier

Misol:

Swift
Parametrli ichki funksiya
// tashqi funksiya func addNumbers() { print("Addition") // ichki funksiya func display(num1: Int, num2: Int) { print("5 + 10 =", num1 + num2) } // ichki funksiyani ikki qiymat bilan chaqirish display(num1: 5, num2: 10) } // tashqi funksiyani chaqirish addNumbers()

Bu misolda display() funksiyasi addNumbers() funksiyasi ichida joylashgan.

Misol:

Swift
Ichki funksiyani qaytarish
func operate(symbol: String) -> (Int, Int) -> Int { // ikki sonni qo'shadigan ichki funksiya func add(num1: Int, num2: Int) -> Int { return num1 + num2 } // ikki sonni ayiradigan ichki funksiya func subtract(num1: Int, num2: Int) -> Int { return num1 - num2 } let operation = (symbol == "+") ? add : subtract return operation } let operation = operate(symbol: "+") let result = operation(8, 3) print("Result:", result)

Yuqoridagi misolda add() va subtract() funksiyalari operate() funksiyasi ichida joylashgan.

E'tibor bering:

func operate(symbol: String) -> (Int, Int) -> Int

Bu yerda (Int, Int) -> Int β€” tashqi funksiyaning qaytariladigan qiymat turi.

Ya'ni, tashqi funksiya ikkita Int parametr qabul qiladigan va Int qaytaradigan funksiyani qaytaradi.

Bu tur ichki funksiyalar (add yoki subtract) bilan bir xil bo'lgani uchun, tashqi funksiya ichki funksiyalardan birini qaytaradi.


Birinchi masalaning yechimi

Keling, birinchi masala "Yordamchi funksiya" ni birga yechib ko'ramiz:

1-qadam: Masalani tushunish

  • num = 5 β†’ "positive"
  • num = -3 β†’ "negative"
  • num = 0 β†’ "zero"

2-qadam: Yechim algoritmi

  1. Ichki funksiyalar yaratamiz: isPositive, isNegative
  2. Sonni tekshiramiz
  3. Mos natijani qaytaramiz

3-qadam: Kodni yozamiz

Swift
Yordamchi funksiya yechimi
func checkNumber(num: Int) -> String { // Ichki funksiyalar func isPositive(_ n: Int) -> Bool { return n > 0 } func isNegative(_ n: Int) -> Bool { return n < 0 } // Tekshirish if isPositive(num) { return "positive" } else if isNegative(num) { return "negative" } else { return "zero" } } // Test print(checkNumber(num: 5)) // positive print(checkNumber(num: -3)) // negative print(checkNumber(num: 0)) // zero

Natija: Ichki funksiyalar yordamida sonning belgisini aniqladik.

Buy mea coffee