5

Moduleクラスを開いて、それにメソッドを追加しましょう。

class Module  
  def foo  
    puts "phew"  
  end  
end

これを行うことで、このメソッドを呼び出すことができます。

Class.foo

Classこれは、のクラスがでありClass、そのスーパークラスがであるため理解できModuleます。したがって、で定義されたインスタンスメソッドを呼び出すことができますModule

クラスとモジュールの関係

ここで、以下のメソッドはの固有クラスbarで定義されています。Module

class Module  
   def self.bar  
     puts "bar"  
   end  
end

でも今

Class.bar 

また動作します。

誰かがの固有クラスのClassメソッドにアクセスする方法を教えてModuleもらえますか?


私は今それを手に入れたと思います。メソッドルックアップは、前に説明したようには機能しません。私がそうするときClass.foo、メソッドはClass's eigenclassで検索され、次に'eigenclassから'seigenclassまでのスーパークラスでありModuleBasicObjectその時点で(蛇が自分の尻尾を食べるように)自分自身をオンにしてClass('s eigenclassのスーパークラスと同様に)、次にそのスーパークラスClassに、メソッドが見つかります。BasicObjectModule

同様に、私が行うClass.barと、メソッドはClass's eigenclassで検索され、次にModule'seigenclassで検索されます。

私がする時

class Class   
  def check  
    puts "class instance method"  
  end
end   

class Module   
  def self.check    
    puts "modules eigenclass method"     
  end    
  def check    
    puts "module instance method"   
  end     
end

私が行うときの出力はwotだと思います:

Class.check 

これが私の現在の理解です: 現在の理解

4

3 に答える 3

0

私は最近、Ruby 2.0 の新しい動作を含むかなり広範なチュートリアルを書きました。

注: Ruby で使用される用語は でありsingleton_class、 ではありませんeigenclass

于 2013-04-13T19:44:15.853 に答える
0

eigenclass最近、Rubyに関するチュートリアルを書きました。

5 分以内に固有クラスを理解する

于 2019-01-16T10:16:18.507 に答える