Darsliklar Ruby Metod parametrlari

Ruby Ruby Metod parametrlari

Metod parametrlari — metodga tashqaridan ma’lumot uzatish vositasi. Ruby’da parametrlarni belgilashning bir necha shakli bor: majburiy, standart qiymatli, cheksiz sondagi va nomlangan (keyword) parametrlar.

Parametrmetod e’lon qilinganda qavs ichida ko’rsatiladigan o’zgaruvchi nomi. Chaqiruvda unga mos beriladigan qiymat esa argument deb ataladi.

Standart (default) qiymatli parametr

Parametrga = orqali standart qiymat berish mumkin — chaqiruvda argument berilmasa, o’sha qiymat ishlatiladi:

def salomlash(ism, til = "uz")
  if til == "uz"
    puts "Salom, #{ism}!"
  else
    puts "Hello, #{ism}!"
  end
end

salomlash("Farrux")
salomlash("Master Sherkulov", "en")
Salom, Farrux!
Hello, Master Sherkulov!

Birinchi chaqiruvda til ko’rsatilmagani uchun standart "uz" ishlatildi. Standart qiymatli parametr majburiy parametrlardan keyin yozilishi kerak.

Splat parametr — cheksiz sondagi argument

Chaqiruvda nechta argument berilishi oldindan noma’lum bo’lsa, * (splat) ishlatiladi — u barcha argumentlarni bitta massivga yig’adi:

def yigindi(*sonlar)
  sonlar.sum
end

puts yigindi(1, 2, 3)
puts yigindi(10, 20, 30, 40)
puts yigindi()
6
100
0

*sonlar — chaqiruvda berilgan barcha argumentlarni [1, 2, 3] kabi massivga yig’adi. Argument umuman berilmasa, sonlar bo’sh massiv ([]) bo’ladi, sum esa 0 qaytaradi.

Nomlangan (keyword) parametrlar

Argumentlarni nom orqali, tartibga qaramasdan uzatish mumkin — bu ko’p parametrli metodlarni o’qishga osonlashtiradi:

def foydalanuvchi_yarat(ism:, yosh: 18)
  puts "#{ism}, #{yosh} yosh"
end

foydalanuvchi_yarat(ism: "Farrux", yosh: 26)
foydalanuvchi_yarat(yosh: 30, ism: "Master Sherkulov")
foydalanuvchi_yarat(ism: "Aziz")
Farrux, 26 yosh
Master Sherkulov, 30 yosh
Aziz, 18 yosh

ism: — ikki nuqta bilan tugagan parametr majburiy nomlangan argumentni bildiradi, yosh: 18 esa standart qiymatli nomlangan parametr. Nomlangan argumentlar chaqiruvda istalgan tartibda berilishi mumkin, chunki ular nomi orqali aniqlanadi.

Barcha turlarni birlashtirish

Bitta metodda majburiy, standart va splat parametrlarni birga ishlatish mumkin:

def buyurtma(mijoz, *mahsulotlar, yetkazish: "Standart")
  puts "Mijoz: #{mijoz}"
  puts "Mahsulotlar: #{mahsulotlar.join(', ')}"
  puts "Yetkazish: #{yetkazish}"
end

buyurtma("Farrux", "telefon", "quloqchin", yetkazish: "Tezkor")
Mijoz: Farrux
Mahsulotlar: telefon, quloqchin
Yetkazish: Tezkor

Ruby parametrlarni belgilangan tartibda taqsimlaydi: avval majburiy (mijoz), so’ng splat (*mahsulotlar — qolgan barcha oddiy argumentlarni yutadi), oxirida nomlangan (yetkazish:). Bu tartibga rioya qilish shart.