Rubyモジュールの作成と使用の基本

ルビー・オン・レール は素晴らしいオープンソースのフルスタック・ウェブ・アプリケーション・フレームワークで、設定よりも規約を重視する。.  通常アプリケーションの作成に使用される再利用可能で簡単に構成可能なコンポーネントを使用すると、Rails でのアプリケーションの構築がより迅速かつ簡単になり、その結果、生産性が向上し、ビジネスの成長がもたらされます。 柔軟でスケーラブルで、Web 開発者にとってアプリケーションの作成と保守が簡単であるため、開発者の間で注目を集めています。 

ルビー・オン・レール Web アプリケーションを構築する際の作業負荷を軽減するために、既知のエンジニアリング パターンと原則を使用することに重点を置いています。 プログラミングの課題を解決する方法は複数ありますが、Ruby は一般的に使用されるパターンに依存して、Rails Web サイトの保守とアップグレードを容易にすると公言しています。 開発オーバーヘッドを削減するために、特定の問題を解決する小さな Rails コード ブロックを含むオープン ソース ライブラリが一般的に使用されます。 このようなコード ブロックを利用すると、開発者は同じ種類のコードを書くのに時間を費やすことなく、安定した十分にテストされた gem を挿入できます。 Ruby プログラマーのツールボックスの中で最も強力なツールの 1 つはモジュールです。 ルビー モジュール は、Rubyのクラス、メソッド、定数を、個別に命名・定義された単一のユニットにまとめるための構造を提供します。.

これは、既存のクラス、メソッド、定数との衝突を回避したり、モジュールの機能をクラスに追加 (混合) したりするのに役立ちます。

Rubyでモジュールを作成する

モジュールの作成はクラスの作成と似ていますが、classキーワードの代わりにmoduleキーワードを使う点が異なります。.

モジュール MyFirstModule
  def say_hello
    puts "こんにちは"
  end
終わり

モジュールはインスタンス化できない。モジュールを使うには、クラス内でインクルードするか、モジュールを拡張する必要がある。.

インクルードとエクステンドの使用

  • 含む

モジュールのメソッドをクラスのインスタンス・メソッドとして混ぜる。.

  • 拡張

モジュールのメソッドをクラスのクラスメソッドとして混ぜる。.

モジュール ReusableModule
  def module_method
    puts "モジュールメソッド:こんにちは!"
  end
終了

クラスClassThatIncludes
  インクルードReusableModule
終了

クラスClassThatExtends
  extend ReusableModule
エンド

puts "インクルード"
クラスThatIncludes.new.module_method
# => "モジュール・メソッド:こんにちは!"

puts "拡張"
クラス拡張.module_method
# => "モジュール・メソッド:こんにちは!"

Rubyのモジュールに関するその他の重要な概念

1.メソッド・ルックアップの基本

モジュール M
  def report
    モジュールMの'report'メソッド"
  end
終了

クラス C
  インクルード M
終了

クラス D < C
終了
obj = D.new obj.report

出力:

'モジュールMの'report'メソッド

メソッド検索の仕組み

Rubyオブジェクトはメッセージ(メソッド呼び出し)を受け取ると、この順序でメソッドを検索する:

  1. オブジェクト・クラス(D)
  2. クラスに含まれるモジュール(D)
  3. スーパークラス (C)
  4. スーパークラスに含まれるモジュール (M)
  5. 継承の連鎖を続ける

この場合

  • Dはレポートを定義していない
  • Cはレポートを定義していない
  • CはモジュールMを含む
  • Mはreportを定義しているので、Rubyはそれを実行する。

2.同じメソッドを複数回定義する

メソッドが複数回定義されている場合は、最後の定義が優先されます。これはクラスとモジュールの両方に適用されます。.

モジュール InterestBearing
  def 利子計算
    puts "プレースホルダ!モジュール InterestBearing に入りました。"
  end
終了

クラス BankAccount
  include InterestBearing

  def 利息を計算する
    puts "プレースホルダ!BankAccountクラスにいます。"
    puts "そして、calculate_interestメソッドをオーバーライドしています!"
  終了
終了

account = BankAccount.new
account.calculate_interest

出力:

プレースホルダーここはBankAccountクラスです。.
そして、calculate_interestメソッドをオーバーライドしている!

クラス・メソッドはモジュール・メソッドをオーバーライドする。.

3.同じメソッド名で複数のRubyモジュールを混在させる

モジュール M
  def report
    モジュールMの'report'メソッド"
  end
終了

モジュール N
  def report
    puts ''report" メソッドをモジュールNに追加"
  end
終了

クラス C
  インクルード M
  インクルードN
終了

c = C.new
c.report

出力:

'モジュール N の 'report' メソッド

最後にインクルードされたモジュールが、メソッド検索パスで最初に表示されるからだ。.

4.Rubyモジュールを複数回インクルードする

クラスC
  インクルードM
  インクルードN
  インクルードM
エンド

c = C.new
c.report

出力:

'モジュール N の 'report' メソッド

説明

モジュールを再インクルードしても、そのモジュールがすでにルックアップ・パスにある場合は何の効果もありません。Rubyはそれを再度先頭に移動させません。最後にインクルードされた新しいモジュール(N)が優先されます。.

5.Rubyモジュールでsuperを使う

superキーワードを使うと、メソッド・ルックアップ・チェーンの次のメソッドを呼び出すことができる。.

モジュール M
  def report
    モジュールMの'report'メソッド"
  end
終了

クラス C
  インクルード M

  def report
    puts ''クラスCのreportメソッド"
    puts "次の上位のreportメソッドを起動しようとしています...'
    スーパー
    puts '「super」呼び出しから戻る。"
  end
終了

c = C.new
c.report

出力:

'クラスCの'report'メソッド
次の上位のreportメソッドを起動しようとしている...
モジュールMの'report'メソッド
super'呼び出しから戻る。.

ここで起こること

  • Rubyは最初にクラスCでレポートを実行する。
  • superは、ルックアップ連鎖の次のレポート・メソッドを呼び出す(モジュールMから)。
  • その後、コントロールはクラスメソッドに戻る。

レールカーマ は、初期段階から RoR に取り組んでおり、RoR の訓練を受けた強力な従業員とともに、Ruby on Rails のエンドツーエンドのコンサルティング、アーキテクチャ、構築、管理、拡張において世界中の企業に非常に信頼される企業に成長しました。 

続きを読む : 

ご連絡ください。

最新のアップデートを購読する

関連記事

投稿者について

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


jaJapanese