【ROR]クラスのメソッドを定義する方法(ハウツーは、ミックスインモジュール内のクラスメソッドを定義する)モジュールミックスインで

方法A:方法は、修正モジュールを含みます

モジュールバーベキューは
  DEF self.included(ベース)
    base.send:含む、InstanceMethodsの
    base.extendのクラスメソッドの
  エンド

  モジュールInstanceMethodsの
    デフM1 
      「インスタンスメソッド」
    末端
  エンド

  モジュールクラスメソッド
    DEF M2は
      「このクラスのメソッドである」
    末端

クラスTest 
  バーベキュー含む
端を  

 

テスト:

IRB(メイン):030:0> Test.m2 
=> "これはクラスメソッドである" 

(メイン)IRB:031:0> Test.m1 
:トレースバック(最新の呼び出し最後の)
テストのためのNoMethodError(未定義のメソッド`M1' :クラス)

IRB(メイン):032:0> Test.new.m1 
=> "インスタンスメソッド"

  

方法2:activesupportの::懸念をもって

必要「active_support /懸念」

モジュールBbq2はactivesupportの::懸念広がる

  デフM1 
    「インスタンスメソッド」
  エンド

  class_methodsが行う
    DEF平方メートル
      「これはクラスメソッドである」
    エンド
  エンド
エンド

にTest2クラス
  Bbq2の含ま
終わりを  

  

テスト:

IRB(メイン):019:0> Test2.m2 
=> "これはクラスメソッドである" 
IRB(メイン):020:0> Test2.m1 
トレースバック(最新の呼び出しの最後):
NoMethodErrorにTest2のための(未定義のメソッド`M1' :クラス)
IRB(メイン):021:0> Test2.new.m1 
=> "インスタンスメソッド"

  

おすすめ

転載: www.cnblogs.com/dajianshi/p/11453543.html