Metod — ma’lum vazifani bajaradigan, nom bilan atalgan va qayta-qayta chaqirilishi mumkin bo’lgan kod bloki. Ruby’da bu tushuncha boshqa tillardagi “funksiya”ga to’g’ri keladi, lekin “metod” deb atalishining sababi bor: Ruby’da har bir metod aslida qaysidir obyektga tegishli.
def — metod e’lon qilish kalit so’zi.
def nom(parametrlar) ... endshaklida yoziladi va standart holatda blokdagi so’nggi bajarilgan ifodani avtomatik qaytaradi.
Metod yaratish va chaqirish
Metod def bilan boshlanadi, end bilan tugaydi:
def salomlash
puts "Assalomu alaykum, UzbekDevs!"
end
salomlash
salomlash
Assalomu alaykum, UzbekDevs!
Assalomu alaykum, UzbekDevs!
def salomlash ... end metodni e’lon qildi, biroq hali bajarmadi. U faqat nomi bilan chaqirilganda (salomlash) ishga tushadi. Diqqat: Ruby’da metod chaqirishda qavs ixtiyoriy — salomlash() deb ham yozish mumkin edi.
Yashirin (implicit) qaytarish
Ruby’da return yozish shart emas — metod blokidagi so’nggi bajarilgan ifoda avtomatik natija sifatida qaytadi:
def yigindi(a, b)
a + b
end
natija = yigindi(15, 27)
puts natija
42
a + b — bu metoddagi oxirgi ifoda, shuning uchun uning qiymati avtomatik qaytariladi, return a + b yozishning hojati yo’q. Bu Ruby kodini boshqa ko’p tillarga nisbatan ixchamroq qiladi.
Aniq (explicit) return
Metoddan muddatidan oldin chiqish yoki qaytarilayotgan qiymatni aniq ko’rsatish kerak bo’lganda return ishlatiladi:
def baholash(ball)
return "Noto'g'ri ball" if ball < 0 || ball > 100
return "O'tdi" if ball >= 60
"Yiqildi"
end
puts baholash(-5)
puts baholash(75)
puts baholash(40)
Noto'g'ri ball
O'tdi
Yiqildi
Birinchi ikki holatda return ishga tushib, metodni shu yerda to’xtatadi. Oxirgi qatorda esa return yozilmagan — chunki u baribir so’nggi ifoda, natija avtomatik qaytadi.
Nomlash konvensiyasi: ? va !
Ruby metod nomlarida ikkita maxsus belgi ma’no bildiradi — bu shunchaki uslub emas, til bo’ylab qat’iy amal qiluvchi kelishuv:
def juft?(son)
son % 2 == 0
end
puts juft?(8)
puts juft?(7)
true
false
? bilan tugagan metod nomi doim true/false qaytarishi (masalan, oldingi darslarda ko’rgan even?, include? kabi) kutiladi. ! bilan tugagan metod esa (masalan, upcase!) obyektni joyida o’zgartiradigan yoki “xavfli” versiyani bildiradi. Bu ikkala belgi ham metod nomining rasmiy qismi — chaqirishda albatta yozilishi shart.