我正在学习如何在我的Ruby代码使用Module.prepend
代替alias_method_chain
,我已经注意到,有些人使用send
称呼它(example):为什么人们使用`Module.send(:prepend,...)`?
ActionView::TemplateRenderer.send(:prepend,
ActionViewTemplateRendererWithCurrentTemplate)
当别人直接调用它(example) :
ActionView::TemplateRenderer.prepend(ActionViewTemplateRendererWithCurrentTemplate)
而且,虽然我还没有看到任何人使用这种风格,我从文档怀疑,你甚至可以你从前面加上模块中这样写:
module ActionViewTemplateRendererWithCurrentTemplate
# Methods you're overriding go here
prepend_features ActionView::TemplateRenderer
end
这三种风格之间有一些区别吗?是否有理由支持他人?
也许人们仍然会这样写,因为'老习惯',因为#include和#prepend在Ruby 2.1之前曾经是私有方法。 – Matheno
'prepend_features'是一个被'prepend'调用的钩子方法,通常是* not *意图也不是被设计为直接调用。 –