だから、オブジェクトのシングルトンメソッドを定義したいのですが、クロージャーを使ってやりたいです。
例えば、
def define_say(obj, msg)
def obj.say
puts msg
end
end
o = Object.new
define_say o, "hello world!"
o.say
「def」を介してシングルトンメソッドを定義することはクロージャーではないため、これは機能しません。そのため、「msg」が未定義の変数またはメソッドであるという例外が発生します。
私がやりたいことは、Module クラスで「define_method」メソッドを使用するようなものですが、私が知る限り、これはクラスでメソッドを定義するためにしか使用できません...しかし、Singleton メソッドが必要です。 ..
ということで、以下のように書きたいと思います。
def define_say(obj, msg)
obj.define_singleton_method(:say) {
puts msg
}
end
Proc を格納するメソッドを作成せずにこれを達成する方法を知っている人はいますか?シングルトンメソッド内で Proc を使用しますか? (基本的に、これを行うには、クリーンでハッキーでない方法が必要です)