8
我想通過父類的類方法動態創建子類的實例方法。如何動態定義ruby中的實例方法?
class Foo
def self.add_fizz_method &body
# ??? (This is line 3)
end
end
class Bar < Foo
end
Bar.new.fizz #=> nil
class Bar
add_fizz_method do
p "i like turtles"
end
end
Bar.new.fizz #=> "i like turtles"
在第3行寫什麼?
幾乎我需要什麼。問題是 - &block's self應該是Bar的實例。所以可以寫這樣的東西:class Bar; add_fizz_method做; p self.bar_name;結束 ;結束 –
在'p'下面嘗試'p self.class'我喜歡turtles''。 'self'已經是'Bar'的一個實例。 –
Btw:如果你想在調用add_fizz_method之前返回'nil'而不是拋出'NoMethodError',你可以在'Foo'類中聲明一個空的'fizz'方法。 –