NameError:undefined – 在Ruby 2.1.2中更改了局部变量的解析规
发布时间:2020-12-17 03:24:01 所属栏目:百科 来源:网络整理
导读:我得到NameError:未定义的局部变量或使用 ruby 2.1.2的方法 正如在this question中观察到的那样,表达式如: bar if bar = true 引发未定义的局部变量错误(假设事先未定义bar),因为解析器在分配之前会读取bar.而且我相信这个表达方式与以前没什么区别: bar
我得到NameError:未定义的局部变量或使用
ruby 2.1.2的方法
正如在this question中观察到的那样,表达式如: bar if bar = true 引发未定义的局部变量错误(假设事先未定义bar),因为解析器在分配之前会读取bar.而且我相信这个表达方式与以前没什么区别: bar if bar = false 两者之间的区别在于主体是否被评估,但是如果遇到未定义的局部变量,则在评估条件之前立即引发错误并不重要. 但是当我在Ruby 2.1.2上运行第二个代码时,它不会引发错误.它之前是这样吗?如果是这样,那么解析讨论的内容是什么?如果没有,Ruby规范是否已更改?有没有提到这个?它在1.8.7,1.9.3等中做了什么? 解决方法
是的,它在ruby2.1.2中有所改变
在1.8.7,1.9.3,2.0.0甚至2.1.1中,我得到2个警告,没有错误: 2.0.0-p247 :007 > bar if bar = false (irb):7: warning: found = in conditional,should be == => nil 2.0.0-p247 :008 > bar if bar = true (irb):8: warning: found = in conditional,should be == => true 而在2.1.2版本中你提到我得到2个警告和1个NameError错误. 2.1.2 :001 > bar if bar = true (irb):1: warning: found = in conditional,should be == NameError: undefined local variable or method `bar' for main:Object from (irb):1 from /home/durrantm/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>' 2.1.2 :002 > bar if bar = false (irb):2: warning: found = in conditional,should be == => nil 这是在我的Ubuntu 14上 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |