lua 中调用函数的坑点

原创 2016年06月24日 20:07:09

今天在工作中遇到一个神奇的问题,是我之前使用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是找不到的.



快速掌握Lua 5.3 —— 从Lua中调用C函数

Q:Lua调用C函数的两种方式? A: 1、程序主体在C中运行,C函数注册到Lua中。C调用Lua,Lua调用C注册的函数,C得到函数的执行结果。 2、程序主体在Lua中运行,C函数作为库函数供Lua...
  • VermillionTear
  • VermillionTear
  • 2016年04月03日 23:09
  • 7092

lua--函数深入:闭合函数,局部函数,尾调用

lua函数具有两大特征:函数作为第一类值,函数具有特定的词法域(Lexical Scoping) 所谓第一类值:代表函数和其他传统类型的值是等价的(例如数字和字符串),函数可以同他们一样存储在变量,...
  • yyhero1
  • yyhero1
  • 2015年06月13日 12:36
  • 2471

在c中调用lua函数,获取返回值等

偶们这次主要说说怎么由Lua定义函数, 然后在C或者C++中调用. 这里偶们暂不涉及C++的对象问题, 只讨论调用函数的参数, 返回值和全局变量的使用.   2.   这里偶们在e12.lua里先...
  • cws1214
  • cws1214
  • 2013年11月13日 13:46
  • 8639

Lua中调用函数使用点号和冒号的区别

Lua中调用函数使用点号和冒号的区别 作者:笨木头 字体:[增加 减小] 类型:转载 时间:2014-09-15 我要评论 这篇文章主要介绍了Lua中调用函数使用点号和冒号的区别,本文...
  • boshuzhang
  • boshuzhang
  • 2017年07月31日 11:49
  • 131

CMSware结点调用函数CMS_NODE详解

  • 2011年08月02日 17:28
  • 181KB
  • 下载

Linux常用系统调用函数.ppt

  • 2015年11月22日 10:58
  • 455KB
  • 下载

网络编程相关的系统调用函数

  • 2013年06月02日 09:30
  • 40KB
  • 下载

IC卡调用函数

  • 2014年06月30日 23:59
  • 40KB
  • 下载

丁丁云网络验证delphi调用函数声明源码

  • 2015年08月19日 20:48
  • 3KB
  • 下载

matlab调用函数程序

  • 2014年06月20日 09:24
  • 310KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:lua 中调用函数的坑点
举报原因:
原因补充:

(最多只允许输入30个字)