踩坑:LUA定义成员变量时赋值里不能用self

本文探讨了Lua编程中关于类继承、函数引用和self问题的两个典型陷阱:继承时func2未正确初始化,以及如何正确使用self和全局函数。通过实例解析,帮助开发者避免常见错误。

最近在写lua脚本时碰到了一个坑,成功使我fishing一下午。。

举例:

2个lua文件 A B , B类继承A类

A类:

function A:func1()

...

end

 

A.item1 = {

["item"] = self.func1

}

function A:func2()

...

end

 

B类:

function B:init()

....

self:func2()

...

end

 

继承部分就不写出来了,这么写总是报func2是nil

2 个坑点:

1 框架里在运行前会dofile所有的lua,这里dofile肯定是报错了,但是不知道为什么没停下,仅仅是停在这里,也就是说func1其实是function  但是func2是nil

2 item1里面赋值不能用self   self.func1 改成 A.func1就行了。。。。     

第二点是在第一点 各种调试下找到的,lua的dofile碰到item1时就停下了 也没报错 好坑。。(没报错也许是框架问题)

 

还有个坑点就是

function A:func3(a,b)

return a+b

end

 

local item2 = A.fun3

item2(1,2)

这么写会报b为nil

为啥捏,因为func3里面其实还有个参数就是self

所以应该是这么调用  item2(self,1,2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值