Если у меня есть класс:Instance_eval не работает с делать/конец блока, только с {} -блоков
class KlassWithSecret
def initialize
@secret = 99
end
end
и запустить:
puts KlassWithSecret.new.instance_eval { @secret }
печатает 99, но если я бегу :
puts KlassWithSecret.new.instance_eval do
@secret
end
возвращает ошибку: `instance_eval': wrong number of arguments (0 for 1..3) (ArgumentError)
Почему я не могу использовать блоки do/end с instance_eval
?
P.S. Я использую Ruby 2.1.0.
работает здесь (ruby 2.0.0) какая рубиновая версия вы используете? – levinalex
Работает для меня (2.1.0). Вы уверены, что код, который вы вставили, вызывает ошибку? –
Не воспроизводить в 1.9.3. Если у вас есть более старая/разная реализация Ruby, это может быть связано с более низким приоритетом блока 'do..end', а затем' {..} 'block. –