Junior
Ruby-də modullar nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Ruby-də modullar iki əsas məqsəd üçün istifadə olunur:
-
Namespaces (Ad sahələri): Kodun təşkili, ad konfliktlərinin qarşısını almaq üçün. Onlar əlaqəli sinifləri, metodları və sabitləri bir ad altında qruplaşdırmağa imkan verir. Bu, iki fərqli sinif və ya metodun eyni adı paylaşması vəziyyətini qarşısını alır.
# module_for_namespace.rb module MənimFramework class Doğrulayıcı def doğrula(məlumatlar) # doğrulama məntiqi end end end # başqa_fayl.rb # MənimFramework-dən Doğrulayıcı istifadə etmək üçün: doğrulayıcı = MənimFramework::Doğrulayıcı.new doğrulayıcı.dogrula("bəziləri məlumatlar") -
Mixins (Qarışımlar): Klassik irsiyyət istifadə etmədən bir neçə sinif arasında funksionallığın (metodların) paylaşılması mexanizmi. Modullar
includevə yaprependvasitəsilə siniflərə daxil edilir.include: Modul metodları sinif nümunələrində mövcuddur və sinif daxilində yenidən təyin oluna bilər. Metodların axtarış sırası: cari sinif, daxil edilmiş modul, super siniflər.prepend: Modulu irsiyyət zəncirində sinifdən əvvəl yerləşdirir. Modul metodları sinif metodlarından üstün olur.
includeistifadə nümunəsi:# mixin_module.rb module Loggable def log(mesaj) puts "[LOG] #{mesaj}" end end # class_using_mixin.rb class MənimSinifim include Loggable # Modulu daxil et def məlumatı_emal et log("Məlumat işlənir...") # Modul metodundan istifadə et # digər məntiq end end ob = MənimSinifim.new ob.məlumatı_emal etprependistifadə nümunəsi:# mixin_module.rb module MənimPrependModul def salam puts "Moduldan salam!" end end # class_with_prepend.rb class MənimPrependSinif prepend MənimPrependModul # Modul sinifdən əvvəl irsiyyət zəncirində yerləşir def salam puts "Sinifdən salam!" end end ob = MənimPrependSinif.new ob.salam # "Moduldan salam!" çap edəcək, çünki modul metoduna üstünlük verilir
Modullar nümunə edilə bilməz (obyekt yaradıla bilməz) və siniflər kimi irsiyyət zənciri yoxdur.