Non sono molto contento di questo, ma funziona se entrambi i moduli contengono gli stessi nomi di metodo.
lima c.rb
module A
def me
puts "I am C"
end
def whosit?
puts "It's me, Becky"
end
end
lima d.rb
module A
def me
puts "I am D"
end
end
Poi
class X
load('c.rb')
include A
end
x = X.new
x.me # => I am C
x.whosit? # => It's me, Becky
load('d.rb')
x.me # => I am D
x.whosit? # => It's me, Becky !! Unwanted !!
load('c.rb')
x.me # => I am C
load()
è solo l'apertura modulo A e della sostituzione e/o aggiunta di codice; tutto ciò che non tocca rimane. load()
non è molto luminoso. Penso che fondamentalmente fa un eval()
e potrebbe importare di meno se carica lo stesso file più di una volta.
Per utilizzare questo, non anche require
c.rb o d.rb.
Modifica: in una modifica precedente ho aggiunto un'osservazione su require_relative
. Riflettendomi, vedo che non era né rilevante né interessante, quindi fuori di testa.
fonte
2013-10-19 05:49:45
possibile duplicato di [Qual è l'opposto di Ruby di includere?] (http://stackoverflow.com/questions/2088211/what-is-the-opposite-of-rubys-include) –
@LoganSerman ruby 2.0 risposta Cerco – zotherstupidguy
* include la sostituzione X di includere Y * significa? –