Tag: guard clause

NameError:undefined – 在Ruby 2.1.2中更改了局部变量的解析规则吗?

我得到NameError: undefined local variable or method使用ruby 2.1.2的NameError: undefined local variable or method 正如在这个问题中观察到的,表达式如: bar if bar = true 引发未定义的局部变量错误(假设事先未定义bar ),因为解析器在分配之前会读取bar 。 而且我相信这个表达与以前没有区别: bar if bar = false 两者之间的区别在于主体是否被评估,但是如果遇到未定义的局部变量,则在评估条件之前立即引发错误并不重要。 但是当我在Ruby 2.1.2上运行第二个代码时,它不会引发错误。 它之前是这样吗? 如果是这样,那么解析讨论的内容是什么? 如果没有,Ruby规范是否已更改? 有没有提到这个? 它在1.8.7,1.9.3等中做了什么?