Ruby 2.0.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Moduleクラス > define_method (private)

instance method Module#define_method

define_method(name, method) -> Proc | Method | UnboundMethod[permalink][rdoc]
define_method(name) { ... } -> Proc

インスタンスメソッド name を定義します。

ブロックを与えた場合、定義したメソッドの実行時にブロックが レシーバクラスのインスタンスの上で BasicObject#instance_eval されます。

[PARAM] name:
String または Symbol を指定します。
[PARAM] method:
ProcMethod あるいは UnboundMethod の いずれかのインスタンスを指定します。
[RETURN]
引数 method を与えたときはそれを、ブロック付きで 呼びだしたときはブロックを Proc 化したオブジェクトを、 それぞれ返します。
[EXCEPTION] TypeError:
method に同じクラス、サブクラス、モジュール以外のメソッ ドを指定した場合に発生します。
class Foo
  def foo() p :foo end
  define_method(:bar, instance_method(:foo))
end
Foo.new.bar    # => :foo