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

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

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

作成日: 更新日:

基本的な使い方

dupメソッドは、レシーバであるMethodオブジェクトのシャローコピー(浅いコピー)を作成し、新しいMethodオブジェクトを生成するメソッドです。このメソッドは、元のMethodオブジェクトと全く同じ振る舞いを持つ、新しいMethodオブジェクトを返します。

生成された新しいMethodオブジェクトは、元のMethodオブジェクトが指し示すメソッド名、レシーバ、定義元のクラスといったすべての情報を引き継ぎます。したがって、この複製されたMethodオブジェクトを呼び出しても、元のMethodオブジェクトを呼び出した場合と全く同じ処理が実行されます。

しかし、新しいMethodオブジェクトは、元のMethodオブジェクトとは異なるオブジェクトIDを持つ、独立したインスタンスとして扱われます。Methodオブジェクトは通常、その内容が変更されないイミュータブルな特性を持つため、dupメソッドは主に、同じ機能を持つ独立したMethodオブジェクトのインスタンスが必要な場合や、オブジェクトの同一性を区別したい場合に利用されます。これにより、元のオブジェクトに影響を与えることなく、その機能を別の文脈で利用する柔軟性が得られます。

構文(syntax)

1method_object = String.instance_method(:length)
2duplicated_method_object = method_object.dup

引数(parameters)

引数なし

引数はありません

戻り値(return)

Method

メソッドオブジェクトの複製を返します。複製されたメソッドは、元のメソッドと全く同じ振る舞いをします。

関連コンテンツ