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.
Parametr — metod 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.