Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Module::define_method()メソッドの使い方

define_methodメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

define_methodメソッドは、Rubyにおいて実行時に新しいメソッドを動的に定義するメソッドです。このメソッドはModuleクラスに属しており、クラスやモジュールに対して、プログラムの実行中に新しい振る舞い(メソッド)を追加する柔軟性を提供します。

define_methodを使用する際は、第一引数に定義したいメソッドの名前をシンボルまたは文字列で指定し、第二引数としてそのメソッドが実行する処理内容をブロックで渡します。このブロックが、新しく定義されるメソッドの本体となります。ブロック内で記述された処理が、そのメソッドが呼び出された際に実行されます。新しく定義されたメソッドは、通常のメソッドと同様にインスタンスから呼び出すことができます。

この機能は、複数の類似したメソッドを一度に定義したい場合や、設定ファイルなど外部の情報に基づいてメソッドの振る舞いを変更したい場合に非常に有効です。これにより、コードの重複を避け、より柔軟で拡張性の高いプログラムを記述できます。特に、フレームワークやDSL(ドメイン固有言語)を構築する際に、共通のパターンを持つメソッドを簡潔に生成するために広く利用されます。通常のdefキーワードによるメソッド定義とは異なり、プログラムの実行時にメソッドの定義を操作できるため、Rubyの強力なメタプログラミングのツールの一つとして位置づけられています。適切に利用することで、より動的で洗練されたコードを実現できます。

構文(syntax)

1class MyClass
2  define_method(:greeting) do |name|
3    "Hello, #{name}!"
4  end
5end

引数(parameters)

symbol, method

  • symbol: 定義するメソッドの名前(シンボルまたは文字列)
  • method: 定義するメソッドの本体となるProcオブジェクトまたはブロック

戻り値(return)

Symbol

define_methodメソッドを呼び出した際に、定義されたメソッドの名前を表すSymbolが返されます。

関連コンテンツ

関連プログラミング言語