- Published on
Swiftda ichma-ich funksiyalar (Nested Functions)
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
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:
// tashqi funksiya
func greetMessage() {
// ichki funksiya
func displayName() {
print("Good Morning Abraham!")
}
// ichki funksiyani chaqirish
displayName()
}
// tashqi funksiyani chaqirish
greetMessage()
Natija
Good Morning Abraham!
Yuqoridagi misolda biz ikki funksiya yaratdik:
greetMessage()— oddiy tashqi funksiyadisplayName()— 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:
// 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()
Natija
Addition
5 + 10 = 15
Bu misolda display() funksiyasi addNumbers() funksiyasi ichida joylashgan.
Ichki funksiyada ikki parametr bor:
func display(num1: Int, num2: Int)
Shu sabab, funksiyani chaqirganda 5 va 10 uzatilgan:
display(num1: 5, num2: 10)
Misol:
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)
Natija
Result: 11
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.
Shu sababdan, tashqi funksiyani chaqirgandan so‘ng ichki funksiyani tashqaridan ham chaqirish mumkin:
let result = operation(8, 3)
Bu yerda operation(8, 3) — add(8, 3) yoki subtract(8, 3) funksiyasining natijasiga almashtiriladi. Qaysi biri ishlatilishi symbol qiymatiga bog‘liq.