Итак, я хочу определить метод singleton для объекта, но я хочу сделать это с помощью закрытия.
Например,
def define_say(obj, msg)
def obj.say
puts msg
end
end
o = Object.new
define_say o, "hello world!"
o.say
Это не работает, потому что определение метода singleton через "def" не является закрытием, поэтому я получаю исключение, которое "msg" является переменной или методом undefined.
То, что я хотел бы сделать, - это что-то вроде использования метода define_method в классе Module, но, насколько я могу судить, это можно использовать только для определения метода в классе... но я хочу, чтобы Метод Singleton...
Итак, я хотел бы написать что-то вроде этого:
def define_say(obj, msg)
obj.define_singleton_method(:say) {
puts msg
}
end
Кто-нибудь знает, как я могу достичь этого, не создавая метод для хранения Proc, а затем использовать Proc в методе singleton? (в основном, я хочу, чтобы это было чистым, не-взломанным способом)