Darsliklar Ruby Metod

Ruby Ruby Metod

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.

defmetod e’lon qilish kalit so’zi. def nom(parametrlar) ... end shaklida 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.