O’zbekiston aloqa va axborotlashtirish agentligi
Download 0.58 Mb. Pdf ko'rish
|
ruby dasturlash tili asoslari
1.3.5. Usullar va atributlar
Ko’rganimizdek bu usullar oddiy nusxali (ekzemplyarlar) sinflar va o’zgaruvchi bilan birgalikda foydalaniladi. Chaqirilayotgan ob’ekt usul nomidan nuqta bilan ajratiladi (receiver. method). Agar usul nomi tinish belgisi bo’lsa, nuqta qo’yilmaydi. Usullar argumenti bo’lishi mumkin : Time.mktime(2000, "Aug", 24, 16, 0). Har bir ifoda ma’noni qaytaradi,bunda usullar chaqiruvchi bir biri bilan ulanadi:
3.succ.to_s /(x.z).*?(x.z).*?/.match("x1z_1a3_x2z_1b3_").to_a[1..3] 3+2.succ Darvoqe, agar ifoda, birlashuv birikuv (сцепление) natijasi bo’lib, aniq usulga ega bo’lmasa, muammo paydo bo’ladi. Aniqrog’i, aniq sharoitda (xolatda) ba’zi usullar nilga qaytadi, bu ob’ektdan chaqirilgan har bir usul xatoga olib keladi. (albatta, nil – to’liq ob’ekt, lekin massivday usullarga ega emas). Ba’zi usullarga bloklarni uzatish mumkin. Foydalanuvchi aniqlangan yoki o’rnatilgan hamma iteratorlar uchun. Blok odatda operator qavslarga do-end yoki figurali qavslarga yopiladi. Lekin ular ulardan oldingi parametrlardan ko’rilmaydi. Chaqiruv uslub File. open misolida : my_array.each do |x| some_action end File.open(filename) { |f| some_action } Ruby versiyasida nomlangan parametrlar ko’rsatiladi, Python tilida ular kalit argumentlar (dalillar), Ada tilida aytiladi. 39 Usullar o’zgaruvchan argument sonni qabul qilishi mumkin : receiver. method (arg 1, * more_args)
Berilgan xolatda chaqirilgan usul more_args deb nomlanib, turli massivlarday qo’llaniladi. Darhaqiqat, formal parametrdagi ro’yxatdagi yulduzcha (oxirgi bo’lmagan yoki yagona parametr) massivga parametr ketma-ketligini “свернуть” yopishi mumkin.
Sinf emas ob’ekt darajasida Rubyda usullarni aniqlash imkoniyatiga ega. Bu usullar sitletli deb ataladi ; Ular yagona ob’ektga mansub bo’lib, na sinflarga,na uning super – sinflariga ta’sir qiladi. Bunday imkoniyat foydalanuvchining grafik interfeys ishlanmasida foydalanish mumkin. Knopkani (tugmacha) harakatini aniqlash uchun, berilgan tugmachaga singlet usulini qo’llaysiz ; Qator ob’ekt uchun singlet usuli aniqlash : str = "Hello, world!" str2 = "Goodbye!" def str.spell self.split(/./).join("-") end str.spell # "H-e-l-l-o-,- -w-o-r-l-d-!" str2.spell # hatoooooo! Shunisi ahamiyatli. 40 O’zgaruvchi uchun emas, bu usul ob’ekt uchun qo’llaniladi. Nazariy singlet usuli yordami bilan o’xshash hollarda ob’ektlar tizimini (sistemasini) yaratish mumkin.
Sinfsiz OOP shakli. Undagi asosiy struktura mexanizmi avval qo’llanilgan ob’ektga qarab yangi ob’ektni konstruksiya qilish mumkin. Bunday sistema Rubyning imkoniyatlarini to’liq ochish mumkin.
|
ma'muriyatiga murojaat qiling