我编写了一个简单的echo循环,但它给出了未定义的局部变量错误。

> puts line while line = gets
NameError: undefined local variable or method `line' for main:Object

为什么lineputs不可见?
我知道添加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/

10-13 07:59
查看更多