Published on

Swiftda funksiya Overloading

Authors

Swiftda bir nechta funksiyalar bir xil nomga ega bo‘lishi mumkin, agar ularning parametrlari farq qilsa (parametrlar soni boshqacha, turlari boshqacha yoki har ikkalasi).

Bunday funksiyalar overloaded functions (ortiqcha yuklangan funksiyalar) deyiladi. Bu xususiyat esa function overloading deb ataladi.

Misol:

// bir xil nom, turli argumentlar
func test() { ... }
func test(value: Int) -> Int { ... }
func test(value: String) -> String { ... }
func test(value1: Int, value2: Double) -> Double { ... }

Bu yerda test() funksiyasi overloaded qilingan. Nomlari bir xil, ammo argument turlari boshqacha.

Return turi overloadingga taalluqli emas. Funksiyalar qaytaradigan qiymat turi bir xil yoki boshqacha bo‘lishi mumkin, ammo parametrlari albatta farq qilishi kerak.

Misol:

// Int turidagi parametrga ega funksiya
func displayValue(value: Int) {
    print("Integer qiymat:", value)
}

// String turidagi parametrga ega funksiya
func displayValue(value: String) {
    print("String qiymat:", value)
}

// String parametr bilan chaqirish
displayValue(value: "Swift")

// Int parametr bilan chaqirish
displayValue(value: 2)

Natija:

String qiymat: Swift
Integer qiymat: 2

Bu misolda displayValue() quyidagicha overloaded qilingan:

  • biri Int parametr oladi
  • boshqasi String parametr oladi

Chaqirilgan parametr turiga qarab, tegishli funksiya tanlanadi.

displayValue() funksiyasi uchun Function Overloading ishlashi func

Misol 2: Parametrlar soni bo‘yicha Overloading

// ikki parametrli funksiya
func display(number1: Int, number2: Int) {
   print("1-Integer: \(number1) va 2-Integer: \(number2)")
}

// bitta parametrli funksiya
func display(number: Int) {
   print("Integer son:", number)
}

// bitta parametr bilan chaqirish
display(number: 5)

// ikki parametr bilan chaqirish
display(number1: 6, number2: 8)

Natija:

Integer son: 5
1-Integer: 6 va 2-Integer: 8

Bu yerda display() funksiyasi parametrlar soni bo‘yicha overloaded qilingan.

Argumentlar soniga qarab tegishli funksiya tanlanadi.

display() funksiyasi uchun Function Overloading ishlashi func

Misol 3: Argument Label orqali Overloading

func display(person1 age: Int) {
    print("1-shaxs yoshi:", age)
}

func display(person2 age: Int) {
    print("2-shaxs yoshi:", age)
}

display(person1: 25)

display(person2: 38)

Natija:

1-shaxs yoshi: 25
2-shaxs yoshi: 38

Bu misolda ikkita display() funksiyasi:

  • parametrlar soni bir xil
  • parametrlar turi bir xil

Lekin baribir overloaded qilingan, chunki Swift’da argument label orqali ham overloading mumkin.

Bu yerda:

  • person1 — birinchi funksiya uchun label
  • person2 — ikkinchi funksiya uchun label

Funksiya chaqirilganda ishlatilgan labelga qarab tegishli funksiya tanlanadi.