我會問一個具體的例子(在Rails中)。在「Destroy without Javascript (revised)」 railscast,瑞恩·貝茨將覆蓋#resources
路由方法:「超級」如何與模塊一起工作?
module DeleteResourceRoute
def resources(*args, &block)
super(*args) do
# some code
end
end
end
ActionDispatch::Routing::Mapper.send(:include, DeleteResourceRoute)
但不繼承在Ruby中工作的方式,在模塊是「超」。他怎麼可以從模塊中調用#super
,然後呢?
如果可以覆蓋的方法是這樣的話的人,而不是這樣做:
class SomeClass
alias old_method method
def method
# ...
old_method
# ...
end
end
可以做一些這樣的:
class SomeClass
include Module.new {
def method
# ...
super
# ...
end
}
end
我缺少什麼?
順便說一下:這正是Ruby 2.0中的'prepend'。 –