【发布时间】:2016-07-20 05:01:00
【问题描述】:
这两行代码有什么区别?
a = (b if (b = "test"))
a = b if (b = "test")
第一个运行良好并将a 和b 设置为test,但第二个抛出错误:
NameError: undefined local variable or method `b' for main:Object
我会假设对于第二行,Ruby 将首先评估 b = "test",然后是 if "test",最后是 a = b。究竟发生了什么?
(Ruby 版本 2.2.4)
【问题讨论】:
-
这些都不能在 ruby 2.3 中工作(就像它应该的那样)。
-
德文郡,您可以检查instruction sequences 的两条线并自己找出差异。我个人不会打扰,因为这段代码永远不应该被使用,而且无论如何它不会在最新的 ruby 中重现。
-
无法复制。
标签: ruby conditional lexical-analysis operator-precedence