Junior
Pentru ce sunt folosite modulele în Ruby?
sobes.tech AI
Răspuns de la AI
Modulele în Ruby sunt utilizate pentru două scopuri principale:
-
Namespaces (Spații de nume): Organizarea codului pentru a preveni conflictele de nume. Permite gruparea claselor, metodelor și constantelor legate sub un singur nume. Acest lucru ajută la evitarea situațiilor în care două clase sau metode diferite au același nume.
# module_for_namespace.rb module FrameworkulMeu class Validare def validează(date) # logică de validare end end end # alt_fisier.rb # Pentru a folosi Validare din FrameworkulMeu: validare = FrameworkulMeu::Validare.new validare.validează("anumite date") -
Mixins (Amestecuri): Mecanism pentru partajarea funcționalității (metode) între mai multe clase fără a folosi moștenirea clasică. Modulele sunt incluse în clase cu
includesauprepend.include: Metodele modulului sunt disponibile în instanțele clasei și pot fi suprascrise în clasa însăși. Căutarea metodelor urmează ordinea: clasa curentă, modul inclus, superclase.prepend: Inserează modulul înaintea clasei în lanțul de moștenire. Metodele modulului au prioritate față de cele ale clasei.
Exemplu de utilizare a
include:# mixin_module.rb module Loggable def log(mesaj) puts "[LOG] #{mesaj}" end end # class_using_mixin.rb class ClasaMea include Loggable # Inclus modulul Loggable def procesează_date log("Procesare date...") # Folosește metoda din modul # logică suplimentară end end obj = ClasaMea.new obj.procesează_dateExemplu de utilizare a
prepend:# mixin_module.rb module ModulPrependat def salut puts "Salut din modul!" end end # class_with_prepend.rb class ClasaPrepend prepend ModulPrependat # Modul precede clasa în lanțul de moștenire def salut puts "Salut din clasă!" end end obj = ClasaPrepend.new obj.salut # Va afișa "Salut din modul!" deoarece metoda din modul are prioritate
Modulele nu pot fi instantiate (nu se poate crea un obiect de modul) și nu au un lanț de moștenire în același sens ca și clasele.