15

コードはどのような状況にありますか。

module M
   extend self
   def greet
    puts "hello"
   end

end

次のように言うよりも使用する方が有益です。

module M
   def self.greet
    puts "hello"
   end
end

上はインスタンスメソッドを拡張したもので、後者はただのクラスメソッドですが、どちらのメソッドを呼び出すときも M.greet しなければなりませんよね?あるコードを別のコードよりもいつ使用するかについて誰かが光を当てることができるかどうか、私はただ興味がありました. ありがとう!

4

3 に答える 3

15

最初の例は、通常、人々が機能を実現する方法ですmodule_function(このメソッドの存在を知らない場合)。

Amodule_functionはインスタンス メソッドとクラス メソッドの両方です。2 番目のコード例では、メソッドは単なるクラス メソッドです。

于 2010-07-28T23:48:01.330 に答える
10

最初の例でこれを行うことは可能ですが、2番目の例ではできません:

include M
greet
于 2010-07-28T22:27:54.983 に答える