define_method(name, method) -> Proc | Method | UnboundMethod[permalink][rdoc]define_method(name) { ... } -> Proc-
インスタンスメソッド name を定義します。
ブロックを与えた場合、定義したメソッドの実行時にブロックがレシーバクラスのインスタンスの上で Object#instance_eval されます。
- [PARAM] name:
- String または Symbol を指定します。
- [PARAM] method:
- Proc、Method あるいは 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