lua local 变量和表

发布时间:2020-10-02 15:02:17 作者:bosswanghai
来源:网络 阅读:2311

local是我们在lua编程里面经常写的,经常写的方式为local foo = foo。lua对local的处理有加速访问的效果,并且将变量定义为局部变量也是一种好的编程习惯。


lua对变量和表的local化处理的方式是不同的

======example======

foo = {}

foo.a =1


do

local foo = foo

foo.a =2

print(foo, _G["foo"])

print(foo.a)

print(_G["foo"].a)

end


print(_G["foo"].a)


print("----next case----")

var = 1

do

local var = var

var = 2

print(var)

print(_G["var"])

end


print(_G["var"])


执行结果:

table: 0x7febca407920 table: 0x7febca407920

2

2

2

----next case----

2

1

1

=============

通过代码结果可以看到,local表=全局表,是同一个表,这主要是由于lua的表机制是匿名的,相当于函数的指针,local foo = foo,即使本地foo没有在全局_G注册,还是引用的是同一个表。当没有变量指向表的时候,垃圾回收器会销毁这个匿名表。

而local变量则是创建一个新的变量,遵守子作用域覆盖父作用域的规则。

特别是对于require "modname"中的模块,在编写的时候,不能直接使用全局变量,因为是同一个变会保存其变量状态影响其他使用。最好的处理方式就是尽可能的依据入参,函数内部定义local 变量等来编写代码。


推荐阅读:
  1. lua table引用问题
  2. Lua之table(表)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

变量 lua local

上一篇:python操作数据库之读取数据库数据方法

下一篇:易语言调用api枚举网卡名称并且获取信息的代码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》