任何人都可以解释Lua如何解决这种模棱两可的问题?
我可以定义全局x = 10
,然后执行local x = x
。
从文档中不清楚解释器如何处理这种情况。编辑:很明显,我看错了部分。不要哭。
从观察开始,似乎从那里继续进行本地分配后,标签x
将被假定为引用本地。
提前致谢。
答案 0 :(得分:0)
The documentation explains this clearly.
始终首先检查标识符,从最内层可用范围开始。如果它没有引用可见的局部变量,那么它引用一个全局变量。
对于local x = x
,局部变量的范围在评估评估它的所有表达式之后启动。因此,首先评估x
(使用现有的可见性),这会产生x
的值。然后将此值设置为名为x
的新定义的局部变量。