我正在擴展一個類來接受DSL。實例應始終使用默認值進行響應,但代碼可能會更改。下面的代碼工作正常時,我打電話who_am_i
,其中設置i_am
方法,但我不知道如何設置默認方法。模塊同時擴展和包含?
module Helper
def i_am
"Default code"
end
def who_am_i
class_eval(<<-EOS, __FILE__, __LINE__ + 1)
def i_am
"This was executed in class: \#{self.class.to_s}"
end
EOS
end
end
class Test
extend Helper
end
t = Test.new
t.i_am
我可以這樣做,使這項工作:
class Test2
extend Helper
include Helper
end
t2 = Test2.new
t2.i_am
但是這似乎不可思議。思考?
只是可以肯定,你想i_am是一個實例方法和who_i_am是一個類方法,對不對? – BroiSatse
@BroiSatse我想通了...... – Daniel