{category}

Ruby - モジュールとMix-in

extend

エクステンド(オブジェクト指向プログラミング

意味 モジュールをクラスに追加


extendとは?

extendは、モジュールのメソッドをクラスのクラスメソッドとして追加するためのキーワードです。これにより、モジュールの機能をクラスレベルで拡張できます。

extendの具体的な使い方

モジュールをクラスに追加してクラスメソッドを作成する例

# 数学的な操作を行うモジュールを定義
module MathOperations
  def square(number)
    number ** 2
  end

  def cube(number)
    number ** 3
  end
end

# 計算機クラスを定義し、MathOperationsモジュールをエクステンド
class Calculator
  extend MathOperations

  def self.describe
    puts "この計算機は二乗と三乗の計算ができます。"
  end
end

# クラスメソッドを呼び出す
Calculator.describe
puts "2の二乗: #{Calculator.square(2)}"
puts "3の三乗: #{Calculator.cube(3)}"

👇出力結果

この計算機は二乗と三乗の計算ができます。
2の二乗: 4
3の三乗: 27

この例では、MathOperationsモジュールを定義し、squareメソッドとcubeメソッドを含めています。次に、Calculatorクラスでこのモジュールをエクステンドしています。これにより、CalculatorクラスでMathOperationsのメソッドをクラスメソッドとして使用できるようになります。クラスメソッドdescribeとエクステンドしたsquareメソッドとcubeメソッドを呼び出しています。

extendに関するよくある質問

Q. extendとincludeの違いは?
A. extendはモジュールのメソッドをクラスメソッドとして追加し、includeはインスタンスメソッドとして追加します。extendされたメソッドはクラス自体から呼び出せますが、includeされたメソッドはインスタンスから呼び出します。
Q. extendしたメソッドの呼び出し方は?
A. extendしたメソッドは、クラス名に直接ドット(.)をつけて呼び出します。インスタンスを作成する必要はありません。例:ClassName.method_name
Q. extendとクラスメソッドの違いは?
A. extendはモジュールの機能をクラスに追加する方法で、クラスメソッドは直接クラス内で定義する方法です。extendを使うと、モジュールの再利用性が高まり、複数のクラスで同じ機能を共有しやすくなります。

extendが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Rubyのextendやsuperclass、private、include、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

superclass

親クラスを取得

種類: オブジェクトの性質

private

クラス内部からのみアクセス可能

種類: アクセス制御

include

モジュールの機能を取り込む

種類: モジュールとMix-in

>=

左が右以上か比較

種類: 演算子

cycle

要素を繰り返し処理

種類: イテレーションとEnumerator