c++调用大漠系列:LUA类型检查和返回值

发布时间:2018-10-7 15:29

1991 0 0

1149

用户头衔:VIP会员

关注 私信
本帖最后由 1149 于 2018-10-7 16:01 编辑

1,luaL_checktype,当类型不一致程序会结束运行
[mw_shl_code=cpp,true]int test(lua_State* lua)
{

        luaL_checktype(lua, 1, LUA_TTABLE);

        
        return 0;
}[/mw_shl_code]

如图我传入double,在类型检查里我检测传入参数不是table,明显类型不匹配,所以程序中断运行


2,lua_type,自己判断,当类型不匹配,执行自己的操作
[mw_shl_code=cpp,true]int test(lua_State* lua)
{

        if (lua_type(lua, 2) != LUA_TNUMBER)
        {
                printf("传入的类型不是double");
                return 0;
        }

        printf("继续运行");
        
        return 0;
}[/mw_shl_code]

如图,在LUA里,第一我传入double,第二个传入string,明显第二个参数不匹配,所以打印第一个


printf,第二个printf没有打印

3,返回一个普通类型
[mw_shl_code=cpp,true]int test(lua_State* lua)
{

        lua_pushstring(lua, "我是string类型返回值");
       
        return 1;//1代表返回一个,pop 1个值
}[/mw_shl_code]


4,返回一个表类型
[mw_shl_code=cpp,true]int test(lua_State* lua)
{

        lua_newtable(lua);//创建一张表
        lua_pushnumber(lua, 1);//push 索引
        lua_pushnumber(lua, 99);;//push 值
        lua_settable(lua, 1);//做一个等价于 t[k] = v 的操作 并 pop 索引 pop 值

       
        lua_pushnumber(lua, 2);
        lua_pushnumber(lua, 88);;
        lua_settable(lua, 1);
       
        return 1;//1代表返回一个,pop 1个值
}[/mw_shl_code]



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
B Color Smilies

扫码加入QQ群

842848001@qq.com
842848001

GMT+8, 2024-4-25 18:18

Powered by Discuz! X3.4© 2001-2017 Comsenz Inc.

网站内容仅供用于学习和交流,请遵循相关法律法规

QQ在线咨询|小黑屋|手机版|Archiver|一切从零开始 ( 蜀ICP备15031375号-3 )