Supponiamo che io ho due moduli:Rubino modulo dinamico mix-in
module Test1
attr_accessor :a, :b
@a = 0.0
@b = 0.0
end
module Test2
attr_accessor :c, :d
@c = 0.0
@d = 0.0
end
Ora, voglio mescolare condizionale questi moduli in una classe. Questo è quello che ho provato:
require './Test1.rb'
require './Test2.rb'
class MyClass
def initialize(mode)
if mode == 0
(class << self; include Test1; end)
elsif mode == 1
(class << self; include Test2; end)
else
class << self
include Test1
include Test2
end
end
end
end
questo è il comportamento che sto vedendo:
obj = MyClass.new(0)
obj.a #=> nil
anche @a
è nil
a metodi di istanza all'interno della classe. Sento che non sto capendo qualcosa di importante qui. Mi piacerebbe capire perché quello che sto facendo non funziona e anche quale sia il modo corretto per raggiungere la mia funzionalità desiderata.
Perfetto, questo è esattamente quello che stavo cercando. Grazie! –