Rubyは学びながら(二)

1815 ワード

Rubyは学びながら(二)
Rubyモジュール
モジュールはRubyに2つの役割を果たしています
  • 同じ機能のメソッドを同じ名前の下に置く
  • 便利呼び出し方法
  • モジュール(Module)は、メソッド、クラス、定数を組み合わせる方法です.モジュール(Module)は、2つのメリットを提供します.
  • モジュールは、名前の競合を回避するネーミングスペースを提供します.
  • モジュールはmixin装置を実現した.

  • モジュール(Module)は、砂箱に相当するネーミングスペースを定義し、メソッドと定数が他の場所のメソッドと定数と衝突しません.モジュールはクラスと似ていますが、次のような違いがあります.
  • モジュールは
  • をインスタンス化できない.
  • モジュールにはサブクラスがない
  • モジュールは、他のモジュールによってのみ定義される
  • 1.モジュールの例
    Helloモジュールの作成例
    モジュールメソッド定義はクラスメソッド定義と類似しています.rubyのmoduleと.Netのnamespaceは少し似ていて、同名ですが異なる開発者(または組織)に属するコードを区別することができます.
    #!/usr/bin/ruby                
    
    module Hello                    #                 
    include Math #      (     c#        ),  Math    sqrt  
    
        def self.hello_python        #self    
            print "Hello Python!"
        end
        def self.hello_ruby
            print "Hello Ruby!"
        end
    
        name = "Ruby"
            
        
    
    end
    
    puts Hello::name  #        
    puts Math::sqrt()    #         Math  sqrt  
    puts Math.sqrt()    #       
    
    Hello.hello_python
    Hello.hello_ruby                #        
    
    

    ここでは一つのケースで説明するともっと理解できるかもしれません.
    アヒル類を定義して、泳ぐことができて、泳ぐ方法があります;アヒルは泳ぐだけでなく飛ぶこともできます.黒アヒルは普通のアヒルです.このように設計することができます
    #   
    class Duck
        def swim
            print self.class , " can swim...
    "; end end #" " module FlyModule def fly print " and I can fly...
    " end end # ( , ) class Mallard < Duck include FlyModule # , ( ) end # ( ) class Coot < Duck # Duck def Color "Black" end end aCoot = Coot.new # aCoot.swim; # swim aMallard = Mallard.new # aMallard.swim; aMallard.fly; # " "