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

被折叠的 条评论
为什么被折叠?



