У меня есть следующий код на верхнем уровне файла .rb
:
class Times
def initialize(n)
@n = n
end
def each()
(1..@n).each {yield}
end
end
three_times = Times.new(3)
def f()
Times.new(3).each {puts 'Test'}
end
f()
Это работает и печатает «Test» три раза, как и ожидалось. Однако, если я заменю Times.new(3)
в f
на three_times
, то есть three_times.each {puts 'Test'}
, я получаю сообщение об ошибке:
`f': undefined local variable or method `three_times' for main:Object (NameError)
Почему это не работает? Почему Times
доступен из f
, но не three_times
?
В более общем смысле, что именно делает присваивание на верхнем уровне (например, three_times = Times.new(3)
)?