Published on

Swiftda parametrli va qiymat qaytaradigan funksiya

Authors

Funksiya parametri β€” bu funksiyaga qabul qilinadigan qiymat.

Funksiya parametrlari va qaytariladigan qiymatlar haqida o'rganishdan oldin, Swift funksiyalari haqida bilib oling.

Keling misolni ko'ramiz,

Swift
Funksiya parametrlari
func addNumbers(a: Int, b: Int) { let sum = a + b print("Yig'indi:", sum) } addNumbers(a: 2, b: 3)

Yuqoridagi misolda addNumbers() funksiyasi ikki parametr qabul qiladi: a va b. E'tibor bering:

addNumbers(a: 2, b: 3)

Bu yerda a: 2, b: 3 β€” mos ravishda a va b parametrlari 2 va 3 qiymatlarni olishini bildiradi.

Funksiya chaqiruvi davomida beriladigan qiymatlar argumentlar deb ataladi.

Funksiya parametrlari uchun standart qiymatlar

Swiftda parametrlar uchun standart qiymat berish mumkin.

Buning uchun = operatori ishlatiladi. Misol:

Swift
Standart qiymatli parametrlar
func addNumbers(a: Int = 7, b: Int = 8) { let sum = a + b print("Yig'indi:", sum) } // ikki argument bilan chaqirish addNumbers(a: 2, b: 3) // bitta argument bilan chaqirish addNumbers(a: 2) // argumentsiz chaqirish addNumbers()

Bu yerda parametrlarning standart qiymatlari mos ravishda 7 va 8 qilib berilgan.

Nomlangan argument (Argument Label)

Swiftda funksiyani yanada ifodali qilish uchun argument yorliqlaridan foydalaniladi.

Misol:

Swift
Nomlangan argument
func sum(of a: Int, and b: Int) { print("Yig'indi:", a + b) } sum(of: 2, and: 3)

Bu ko'rinish quyidagiga qaraganda ancha ma'noli:

sum(a: 2, b: 3)

Argument yorliqlarini olib tashlash

Agar parametrdan oldin _ qo'ysak, argument yorliqlari ishlatilmaydi.

Swift
Argument labelni olib tashlash
func sum(_ a: Int, _ b: Int) { print("Yig'indi:", a + b) } sum(2, 3)

Variadic parametrlar (ko'p miqdordagi argumentlar)

Ba'zan argumentlar soni oldindan noma'lum bo'ladi. Bunday holatda variadic parametrlar ishlatiladi.

... belgisi parametrning variadic ekanini bildiradi.

Swift
Variadic parametrlar
func sum(numbers: Int...) { var result = 0 for num in numbers { result = result + num } print("Yig'indi = \(result)") } sum(numbers: 1, 2, 3) sum(numbers: 4, 9)

numbers variadic bo'lgani uchun u funksiya ichida massiv sifatida ishlaydi.

inout parametrlar

Oddiy parametrlar funksiyada o'zgartirilmaydi β€” ular konstantadir.

Masalan, ushbu kod xato beradi:

func changeName(name: String) {
  if name == "" {
    // Xato yuz beradi
    // name = "Ross"
  }
}

Parametrni o'zgaruvchan qilish uchun inout ishlatiladi:

Swift
inout parametrlar
func changeName(name: inout String) { if name == "Ross" { name = "Joey" } } var userName = "Ross" print("Oldin:", userName) changeName(name: &userName) print("Keyin:", userName)

inout parametrga argument berishda & belgisi ishlatiladi.

Funksiyada qaytariladigan qiymat (Return Value)

Funksiya qaytariladigan qiymatga ega bo'lishi mumkin. Buning uchun return operatori ishlatiladi.

Swift
Return value
func addNumbers(a: Int, b: Int) -> Int { let sum = a + b return sum } let result = addNumbers(a: 2, b: 3) print("Yig'indi:", result)

Funksiyadan bir necha qiymat qaytarish

Funksiya bir nechta qiymat qaytarishi ham mumkin β€” tuple yordamida.

func checkMarks() -> (String, Int) {
  // ...
  return (message, marks)
}

Bu yerda qaytarilayotgan qiymatlar tartibi qo'sh tirnoq ichidagi tuple tartibi bilan mos bo'lishi kerak.

Misol:

Swift
Bir nechta qiymat qaytarish
func compute(number: Int) -> (Int, Int, Int) { let square = number * number let cube = square * number return (number, square, cube) } let result = compute(number: 5) print("Son:", result.0) print("Kvadrat:", result.1) print("Kub:", result.2)

Bu yerda result bir nechta qiymatlarni saqlovchi tuple bo'lib, ular indeks orqali olinadi.


Birinchi masalaning yechimi

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

1-qadam: Masalani tushunish

  • name = "Ali" β†’ "Salom, Ali!"
  • argumentsiz β†’ "Salom, Mehmon!"

2-qadam: Yechim algoritmi

  1. Standart qiymatli parametr qabul qilamiz
  2. String interpolation bilan salomlashuv yaratamiz
  3. Natijani qaytaramiz

3-qadam: Kodni yozamiz

Swift
Standart qiymatli funksiya yechimi
func greet(name: String = "Mehmon") -> String { return "Salom, \(name)!" } // Test print(greet(name: "Ali")) // Salom, Ali! print(greet()) // Salom, Mehmon! print(greet(name: "Vali")) // Salom, Vali!

Natija: Funksiya ism berilsa shu ism bilan, berilmasa "Mehmon" bilan salomlashadi.

Buy mea coffee