lua中一些细节的理解

Lua表与变量特性解析

1、lua文档中指出:表的域值不能为nil,我曾经不确定这是否意味着表的某个域名对应的域值一旦被设置为nil,则该域名所索引的域就不复存在。后来做了一个简单的测试,建立表a和表b,设置a的元表为b,b的__index指向b,此时使用rawset设定b的"s"域域值为"bs",print(a.s)输出bs,之后使用rawset设置a的"s"域域值为"as",则print(a.s)输出as,此时再使用rawset把a的"s"域域值设为nil,则print(a.s)再次输出bs,而不是nil,证实a中已经不存在"s"域。<TODO>以后有空再查看lua的源代码证实这一点。

2、lua官方参考中指出:任何不被local修饰的变量都是全局变量。这一点多少有些出人意料,其意思应该是函数体定义中的不带local的变量也是全局的了。这个验证起来比较简单,不详说了,结果确实如此。不过验证过程中发现:lua的函数定义体执行完后仅仅是把定义体编译成了内部形式保存起来,如果从来没有运行过这个函数,则其函数体中定义的全局变量不会存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值