【发布时间】:2019-02-20 08:56:48
【问题描述】:
我在.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' 三次。但是,如果我将f 中的Times.new(3) 替换为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))究竟有什么作用?
【问题讨论】:
标签: ruby global-variables variable-assignment toplevel