当根据上一个key值算不出下一个key值时(其实这时候key的是多少并不重要,只要不为nil就行,因为为nil会返回table的第一个元素),lua_next返回0,结束循环。 2.lua_settable void lua_settable (lua_State *L, int index); 作一个等价于t[k] = v的操作, 这里t是一个给定有效索引index处的值,v指栈顶的...
mytable = setmetatable({key1 = "value1"}, { __newindex = function(mytable, key, value) rawset(mytable, key, "\""..value.."\"") end }) mytable.key1 = "new value" mytable.key2 = 4 print(mytable.key1,mytable.key2) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 创建只读tabl...
lua_settable(lua_State* L, int index) 就是把表在lua堆栈中的值弹出来,index 是table 在堆栈中的位置,假如 table 在 -3, 则key 应该是 -2,value 是 -1 相当于 table[key] = value.
lua_settable(lua_State* L, int index) 就是把表在lua堆栈中的值弹出来,index 是table 在堆栈中的位置,假如 table 在 -3, 则key 应该是 -2,value 是 -1 相当于 table[key] = value.
LUA中table操作(主要是对它stack的理解) lua_getglobal( L, "myTable" ); // 假设我有这么个全局表,这个调用会将该表放在栈顶 lua_pushstring( L, "age" ); // "age"压到栈顶 lua_pushnumber( L, 29 ); // "29"压到栈顶 lua_settable( L, -3 ); // 到此,这个myTable现在处于-3位置,...
lua中的table表示所有的东西,但是table本身是没有方法的,metatable可以去扩展表的一些方法。元表和表是一一对应的,有setmetatable去设置元表,也可以通过getmetatable去获取元表,语法: setmetatable (table, metatable) //对指定table设置metatable getmetatable (table) //返回对象的元表(metatable) ...
1. 前言 lua5.4.4元表现在已经加到了25个类型简单来说元方法的作用是因为使用 lua原始语法不能做到所需的要求比如对两个table进行加减乘除,或者我在退出作用域的时候想要快速的清除自己自定义的一些数据,等等其他…
lua_getfield(L, -1, "x")<== push mytable["x"],作用同下面两行调用 --lua_pushstring(L, "x")<== push key "x" --lua_gettable(L,-2)<== pop key "x", push mytable["x"] lua_setfield必须为字符串键 lua_getglobal(L, "mytable") <== push mytable ...
function 类名:new(o) o = o or {} setmetatable(o,{__index = self}) return oend 或者 function 类名:new(o) o = o or {} setmetatable(o,self) self.__index = self return oend 相比之下,第二种写法可以多省略一个 table,另外有一点我觉得有必要说明的就是 lua 中的元方法...