标签:入栈 方式 oid 模块 mod require strong 同名 自己的
每一个函数都有自己的局部私有栈
样例: static int l_sin(lua_State *L){ double d = lua_tonumber(L,1); //获取參数,索引为1(私有栈) lua_pushnumber(L,sin(d)); //压入结果 return 1; //返回结果的数量 }
样例: C: static const struct luaL_Reg mylib[] = { {"dir",l_dir}, {NULL,NULL} //结尾 } luaL_register(L,"mylib",mylib); Lua: require "mylib" print("mylib.mysin(10)",mylib.mysin(10))
int l_map(lua_State *L){ int i,n; luaL_checktype(L,1,LUA_TTABLE); //第一个參数必须是一个table luaL_checktype(L,2,LUA_TFUNCTION); //第二个參数必须是一个函数 n = lua_objlen(L,1); //获取table大小 for(int i=1;i<=n;i++){ lua_pushvalue(L,2); //压入f lua_rawgeti(L,1,i); //压入t[i] lua_call(L,1,1); //调用f(t[i]) lua_rawseti(L,1,i); //t[i] = 结果,***rawseti设置后会清除栈顶的返回值 } return 0; }
标签:入栈 方式 oid 模块 mod require strong 同名 自己的
原文地址:http://www.cnblogs.com/zhchoutai/p/7190467.html