lualocal变量和表-创新互联

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

成都创新互联从2013年开始,是专业互联网技术服务公司,拥有项目成都网站制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元乐山做网站,已为上家服务,为乐山各地企业和个人服务,联系电话:13518219792

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 变量等来编写代码。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:lualocal变量和表-创新互联
浏览地址:http://ybzwz.com/article/cdeepj.html