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:

Swift
Overloading misoli
// bir xil nom, turli argumentlar func test() { print("No params") } func test(value: Int) { print("Int:", value) } func test(value: String) { print("String:", value) } test() test(value: 5) test(value: "Hello")

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 1: Parametr turi bo'yicha Overloading

Swift
Parametr turi bo'yicha Overloading
// 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)

Bu misolda displayValue() quyidagicha overloaded qilingan:

  • biri Int parametr oladi
  • boshqasi String parametr oladi

Chaqirilgan parametr turiga qarab, tegishli funksiya tanlanadi.

func

Misol 2: Parametrlar soni bo'yicha Overloading

Swift
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)

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

func

Misol 3: Argument Label orqali Overloading

Swift
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)

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.


Birinchi masalaning yechimi

Keling, birinchi masala "Area hisoblash" ni birga yechib ko'ramiz:

1-qadam: Masalani tushunish

  • radius = 5 β†’ Aylana maydoni: Ο€ Γ— 5Β² = 78.54
  • width = 4, height = 6 β†’ To'rtburchak: 4 Γ— 6 = 24
  • side = 5 β†’ Kvadrat: 5 Γ— 5 = 25

2-qadam: Yechim algoritmi

  1. Aylana uchun: Ο€ Γ— radiusΒ²
  2. To'rtburchak uchun: width Γ— height
  3. Kvadrat uchun: side Γ— side

3-qadam: Kodni yozamiz

Swift
Area hisoblash yechimi
// Aylana maydoni func area(radius: Double) -> Double { return Double.pi * radius * radius } // To'rtburchak maydoni func area(width: Double, height: Double) -> Double { return width * height } // Kvadrat maydoni func area(side: Double) -> Double { return side * side } // Test print("Aylana:", round(area(radius: 5.0) * 100) / 100) print("To'rtburchak:", area(width: 4.0, height: 6.0)) print("Kvadrat:", area(side: 5.0))

Natija: Bir xil area nomi bilan turli shakllar maydonini hisoblaydik.

Buy mea coffee