天天挂茶馆

1149 发表于 2018-10-7 15:29:20

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

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

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

      luaL_checktype(lua, 1, LUA_TTABLE);

      
      return 0;
}

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


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

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

      printf("继续运行");
      
      return 0;
}

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


printf,第二个printf没有打印

3,返回一个普通类型
int test(lua_State* lua)
{

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


4,返回一个表类型
int test(lua_State* lua)
{

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

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



页: [1]
查看完整版本: c++调用大漠系列:LUA类型检查和返回值