instance method Module#define_method

define_method(name, method) -> Symbol[permalink][rdoc]
define_method(name) { ... } -> Symbol

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

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

[PARAM] name:
メソッド名を String または Symbol を指定します。
[PARAM] method:
ProcMethod あるいは UnboundMethod のいずれかのインスタンスを指定します。
[RETURN]
メソッド名を表す Symbol を返します。
[EXCEPTION] TypeError:
method に同じクラス、サブクラス、モジュール以外のメソッドを指定した場合に発生します。
class Foo
  def foo() p :foo end
  define_method(:bar, instance_method(:foo))
end
Foo.new.bar    # => :foo