私はRubyのコードでModule.prepend
代わりのalias_method_chain
を使用する方法を学んでいる、と私は何人かの人々が(example)を、それを呼び出すためにsend
を使用することに気付きました:なぜ人々は `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
これらの3つのスタイルにはいくつかの違いがありますか?他の人よりも好意的な理由はありますか?
おそらく、#includeと#prependはRuby 2.1よりも前にプライベートメソッドだったので、人々は '古い習慣'のためにこのように書くでしょう。 – Matheno
'prepend_features'は' prepend'によって呼び出され、一般的には*呼び出されないように意図されておらず、直接呼び出されるように設計されたフックメソッドです。 –