我编写了一个简单的echo循环,但它给出了未定义的局部变量错误。
> puts line while line = gets
NameError: undefined local variable or method `line' for main:Object
为什么
line
对puts
不可见?我知道添加
line = nil
可以修复这个错误但我想知道为什么。> line = nil
> puts line while line = gets #==> Works!
apple banana
apple banana
最佳答案
您会遇到一个错误,因为Ruby解析器从上到下,从左到右读取,所以它读取puts line
,但不知道这个变量的任何信息。
如果您这样重写代码,您的代码将工作:
while line = gets
puts line
end
这样,解析器将首先看到赋值,并且不会抱怨。
关于ruby - 在同一行中设置局部变量时未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29249141/