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