Rubyのモジュール(モジュール)2024 年の最新の入門チュートリアル。このコースでは Rubyは声明を必要とします,Rubyはステートメントを含めます,ミックスインでルビー, について学習できます。
モジュール(モジュール)の方法を組み合わせた方法、クラス、および定数への道です。 モジュール(モジュール)の2つの利点を提供します。
モジュール(モジュール)は、名前空間、サンドボックスと同等のものを定義し、あなたの方法と定数は定数と他の場所での紛争の方法ではありません。
同様のクラスをモジュールが、異なる表情を持ちます:
module Identifier statement1 statement2 jajajajaja. end
モジュールは、同様に、大文字で始まる名前の定数およびクラス定数の名前。 クラスメソッドの定義を定義するために同様のモジュールアプローチ:メソッドの定義は次のようになります。
クラスメソッドを通じて、あなたはモジュール名とモジュール方式を呼び出すメソッドのクラス名の前にドットを配置することができ、あなたは定数を参照するためにモジュール名と二つのコロンを使用することができます。
#!/usr/bin/ruby # 定义在 trig.rb 文件中的模块 module Trig PI = 3.141592654 def Trig.sin(x) # ja end def Trig.cos(x) # ja end end
私たちは、同じ名前を持つ複数の関数が、異なる機能モジュールを定義することができます。
#!/usr/bin/ruby # 定义在 moral.rb 文件中的模块 module Moral VERY_BAD = 0 BAD = 1 def Moral.sin(badness) # ja. end end
クラスメソッドと同様に、あなたはモジュール内でメソッドを定義するときにドットがメソッド名に続いた後、あなたが続くドットモジュール名を指定することができます。
文はCやC ++に似ており、Javaのimport文で文を含める必要があります。 あなたはモジュールのいずれかを使用するサードパーティ製のプログラムが定義されている場合は、単にRubyはモジュールファイルをロードするステートメントを必要と使用することができます。
require filename
ここでは、ファイル拡張子は必要ありません.RB。
$ LOAD_PATH << '。' 「trig.rb 'を必要と 「道徳的」必要 Y = Trig.sin(トリッグ:: PI / 4) 不正行為= Moral.sin(道徳:: VERY_BAD)
ここでは、<< $ LOAD_PATHを使用する'。' Rubyは、我々は現在のディレクトリ内の参照先のファイルを検索しなければならないことを知ってみましょう。 あなたが$ LOAD_PATHを使用したくない場合は、相対ディレクトリからファイルを参照するためにrequire_relativeを使用することができます 。
注:ここでは、ファイルには、同じ関数名が含まれています。そのため、呼び出し側のプログラムに言及する場合、これは難読化につながるが、モジュールは、このコードの難読化を避け、我々は適切な関数を呼び出すために、モジュールの名前を使用することができます。
あなたはクラスのモジュールを埋め込むことができます。 クラスモジュールに埋め込むためには、あなたのクラスにinclude文を使用することができます。
include modulename
モジュールが別のファイルに定義されている場合は、あなたが埋め込まれたモジュールを使用する必要があります前に、文がファイルを参照する必要があります。
support.rbファイルに記述された以下のモジュールを仮定すると。
module Week FIRST_DAY = "Sunday" def Week.weeks_in_month puts "You have four weeks in a month" end def Week.weeks_in_year puts "You have 52 weeks in a year" end end
次のようになりました、クラスモジュールを参照することができます。
#!/usr/bin/ruby $LOAD_PATH << '.' require "support" class Decade include Week no_of_yrs=10 def no_of_months puts Week::FIRST_DAY number=10*12 puts number end end d1=Decade.new puts Week::FIRST_DAY Week.weeks_in_month Week.weeks_in_year d1.no_of_months
これにより、以下の結果が得られます。
Sunday You have four weeks in a month You have 52 weeks in a year Sunday 120
このセクションを読む前に、あなたは、オブジェクト指向の概念の予備的な理解が必要になります。
フィーチャクラスから継承するときに、クラスが複数の親クラスであることができるとき、クラスは多重継承のように表示されます。
Rubyは直接多重継承をサポートしていませんが、Rubyのモジュール(モジュール)は、別の素晴らしい機能を備えています。 これは事実上、多重継承する必要がなくなり、 ミックスインと呼ばれる装置が提供されます。
Rubyは本当に多重継承メカニズムを達成するが、代替として、ミックスイン技術として採用されていません。 モジュールはクラス定義、クラスにミックスするためのモジュールのアプローチがあります。
次のサンプルコード、ミックスインの深い理解を見てみましょう:
module A def a1 end def a2 end end module B def b1 end def b2 end end class Sample include A include B def s1 end end samp=Sample.new samp.a1 samp.a2 samp.b1 samp.b2 samp.s1