Ich fing an, in Ruby zu suchen, da ich eine dynamischere Alternative zu Java suche. Ich mag, wie Sie eine Klasse in Ruby, nachdem es die Definition ändern können, zum Beispiel wie folgt aus:Wie verwende ich Ruby Mixins als Patches für Klassen?
class A
def print
"A"
end
end
class B < A
def print
super + "B"
end
end
class A
alias_method :print_orig, :print
def print
print_orig + "+"
end
end
puts B.new.print # A+B
Jetzt versuche ich das gleiche mit Mixins zu tun:
class A
def print
"A"
end
end
class B < A
def print
super + "B"
end
end
module Plus
alias_method :print_orig, :print
def print
print_orig + "+"
end
end
A.extend(Plus) # variant 1
B.extend(Plus) # variant 2
class A # variant 3
include Plus
end
class B # variant 4
include Plus
end
puts B.new.print
jedoch keine der Varianten produzieren das erwartete Ergebnis. Übrigens, das erwartete Ergebnis ist das Folgende: Ich möchte in der Lage sein, die Klasse A mit einem Mixin zu "patchen", um ihr Verhalten zu modifizieren. Ich möchte Mixins verwenden, da ich mehrere Klassen mit demselben Verhalten "patchen" möchte.
Ist es möglich zu tun, was ich will? Wenn ja, wie?
Schönes Beispiel, +1. – Ernest