Lua:如何解决本地和全局变量标签之间的歧义?

有人能解释一下 Lua 如何解决这种歧义吗? 我可以定义一个全局变量x = 10,然后执行local x = x。 从文档中无法清楚地了解解释器如何处理这种情况。编辑:清楚了,我看错了部分。别哭。 从观察中可以看出,在本地分配后接下来的块中,标签x将被认为是指本地变量。 提前感谢。

点赞
用户734069
用户734069

文档清楚地解释了这一点。

一个标识符总是首先和局部变量比较,从最内部可用作用域开始。如果它不引用一个可见的本地变量,那么它引用一个全局变量。

至于local x = x,一个局部变量的作用域在评估所有评估它的表达式之后开始。因此首先评估x(使用现有的可见性),这会导致x的值。然后将这个值设置为一个新定义的名为x的局部变量。

2013-03-25 00:56:42