Я изучаю метапрограммирование ruby в данный момент, и пока я играл и тестировал материал, я наткнулся на то, на что я не могу найти ответ. Допустим, мы имеем следующий код:Ruby: разница между def и define_method
class Foo
end
Foo.instance_eval do
define_method("bar") do
1
end
end
Я хотел бы ожидать, чтобы добавить метод класса под названием bar
к Foo
, но вместо того, чтобы, когда я вызываю метод он говорит, что это не определено. Что еще меня озадачивает, так это то, что тот же код работает, когда я использую def
вместо define_method
. Оба способа работают, когда я пытаюсь определить метод экземпляра с class_eval
. Так что же здесь происходит?
Заранее спасибо.
Возможный дубликат [Ruby: определить \ _method против . def] (http://stackoverflow.com/questions/185947/ruby-define-method-vs-def) – Sean
Я прочитал этот пост, прежде чем публиковать мои, и я этого не понимал. – Robert
Этот вопрос имеет почти то же название, что и этот, но вопрос не тот. Кроме того, проверенный ответ на этот вопрос слишком краток, чтобы сделать хорошую работу, отвечая на этот вопрос. По этим причинам я не думаю, что этот вопрос должен быть отмечен как дубликат этого вопроса. –