假設我有兩個模塊:紅寶石動態模塊的混合式
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
現在,我想這些模塊有條件混合成一類。這是我已經試過:
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
這是我看到的行爲:
obj = MyClass.new(0)
obj.a #=> nil
而且@a
是在類中的實例方法nil
。我覺得我不瞭解這裏重要的東西。我想了解爲什麼我正在做的工作不正常,以及實現我想要的功能的正確方法是什麼。
完美,這正是我一直在尋找的。謝謝! –