Rubyは学びながら(二)
1815 ワード
Rubyは学びながら(二)
Rubyモジュール
モジュールはRubyに2つの役割を果たしています同じ機能のメソッドを同じ名前の下に置く 便利呼び出し方法 モジュール(Module)は、メソッド、クラス、定数を組み合わせる方法です.モジュール(Module)は、2つのメリットを提供します.モジュールは、名前の競合を回避するネーミングスペースを提供します. モジュールはmixin装置を実現した.
モジュール(Module)は、砂箱に相当するネーミングスペースを定義し、メソッドと定数が他の場所のメソッドと定数と衝突しません.モジュールはクラスと似ていますが、次のような違いがあります.モジュールは をインスタンス化できない.モジュールにはサブクラスがない モジュールは、他のモジュールによってのみ定義される 1.モジュールの例
Helloモジュールの作成例
モジュールメソッド定義はクラスメソッド定義と類似しています.rubyのmoduleと.Netのnamespaceは少し似ていて、同名ですが異なる開発者(または組織)に属するコードを区別することができます.
ここでは一つのケースで説明するともっと理解できるかもしれません.
アヒル類を定義して、泳ぐことができて、泳ぐ方法があります;アヒルは泳ぐだけでなく飛ぶこともできます.黒アヒルは普通のアヒルです.このように設計することができます
Rubyモジュール
モジュールはRubyに2つの役割を果たしています
モジュール(Module)は、砂箱に相当するネーミングスペースを定義し、メソッドと定数が他の場所のメソッドと定数と衝突しません.モジュールはクラスと似ていますが、次のような違いがあります.
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; # " "