lua 中调用函数的坑点

今天在工作中遇到一个神奇的问题,是我之前使用lua没有遇见过的,具体情况是这样的:


一个叫RankList的lua模块,有一个GetRankList(rank_type,rank_sub_type)的函数


需要在UIRankList的lua模块中调用这个函数。

即:


这个RankType.RT_QUALIFYING_NEW_STATS 的类型是userdata,是在c#层定义的一个enum。


然后我得到了一个报错说这个索引查不到东西----nil


我在调用函数内部打印了第一个参数居然是table类型,然后我瞬间蒙逼..


what a fuck?????


原来

在lua中有这样一个语法糖,模块调用函数如果访问符是 : ,lua就会自动默认你的第一个参数是这个调用的模块自身,也就是说我刚才测试打印的函数内的第一个参数其实是self,也就当然是table了.


其实前几天也遇见过类似的情况就是在模块内部调用成员函数的时候,我写成了 "." 来调用,然后使用self.获得成员变量,这样也就出错了,因为这个self是找不到的.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值