Module și Mixins în Ruby: Moștenire Multiplă prin include și extend în Ruby

Ghid complet pentru module în Ruby: organizarea de spații de nume (Namespaces), partajarea logicii prin Mixins, diferența critică dintre include și extend.

Sintaxă
module Logabil; def log; ...; end; end; class App; include Logabil; end

Ruby suportă moștenire simplă de clasă (o clasă poate moșteni un singur părinte direct prin class Copil < Parinte). Pentru a evita problemele complexe ale moștenirii multiple tradiționale din C++, Ruby rezolvă partajarea codului prin Module folosite ca Mixins.

Comandă mixin Unde injectează metodele modulului Cum se apelează metoda
include Modul Ca metode de instanță pe obiectul creat. instanta.metoda
extend Modul Ca metode de clasă (statice) direct pe clasă. NumeClasa.metoda
Mixins în acțiune: Modulul SerializabilJSON
module SerializabilJSON
  def la_json_formatat
    "{\"tip\": \"#{self.class.name}\", \"obiect_id\": #{self.object_id}}"
  end
end

class ProdusMagazin
  include SerializabilJSON # Injectează metoda la_json_formatat în toate instanțele!
  attr_accessor :titlu, :pret

  def initialize(titlu, pret)
    @titlu = titlu
    @pret = pret
  end
end

produs = ProdusMagazin.new("Monitor 4K", 1850)
puts produs.la_json_formatat
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Module și Mixins în Ruby: Moștenire Multiplă prin include și extend

Ai o nelămurire despre utilizarea comenzii Module și Mixins în Ruby: Moștenire Multiplă prin include și extend sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.