È possibile includere i moduli nelle classi per estendere la funzionalità della classe in termini di aggiunta di metodi di classe e metodi di istanza a quella particolare classe.È possibile invertire il modulo incluso in una classe?
module M
def self.class_method_from_module
'from class_method_from_module'
end
def instance_method_from_module
'from instance_method_from_module'
end
end
class C
include M
def self.class_method
'from class_method'
end
def instance_method
'from instance_method'
end
end
puts C.class_method => 'from class_method'
puts C.class_method_from_module => 'from class_method_from_module'
puts C.new.instance_method => 'from instance_method'
puts C.new.instance_method_from_module => 'instance_method_from_module'
Ora anche dopo la rimozione del modulo M dalla memoria con il seguente:
Object.send(:remove_const, :M) #remove the module M
puts C.class_method_from_module => 'from class_method_from_module'
puts C.new.instance_method_from_module => 'instance_method_from_module'
anziché metodo mancanti. Perché? Qual è il modo migliore per rimuovere la funzionalità aggiunta da un modulo a una classe?
Il link 'Mixology' ha un errore di battitura (doubled' y' in url). Ma grazie per questo! –
Wow, questa è una biblioteca veramente antica ... – Hubro