第三行 由于函数lfunctimer_new_hook 后入栈的 所以第一行中的空表现在在堆栈的-2位置上,所以lua_setfield(L, -2, “new”) 代表把函数lfunctimer_new_hook 赋值给表t的"new"索引下标下 t[“new”]=lfunctimer_new_hook ,表t现在在栈顶的位置。 3.lua_getfield //把 t[
c注册lua函数库 setfield,使用user_data.txt文件存储用户账号密码信息,分为注册与登录两个功能。注册功能将用户填写的用户名与密码写入到文件中,并判断是否写入(注册)成功。登录功能将用户填写的用户名和密码与文件中存储用户名密码进行比较,符合则登录成功,不符合则登
lua_getfield(L, -1, "x"); /* 压入 t.x 的值(第 2 个参数)*/ lua_remove(L, -2); /* 从堆栈中移去 't' */ lua_pushinteger(L, 14); /* 第 3 个参数 */ lua_call(L, 3, 1); /* 调用 'f',传入 3 个参数,并索取 1 个返回值 */ lua_setfield(L, LUA_GLOBALSINDEX, "a"...
lua_setfield void lua_setfield (lua_State *L, int index, const char *k); 做一个等价于t[k] = v的操作,这里t是给出的有效索引index处的值,而v是栈顶的那个值。 这个函数将把这个值弹出堆栈。跟在 Lua 中一样,这个函数可能触发一个 "newindex" 事件的元方法(参见§2.8)。 lua_setglobal void ...
lua_setfield# [-1, +0, e] void lua_setfield (lua_State *L, int index, const char *k); 做一个等价于 t[k] = v 的操作, 这里 t 是给出的索引处的值, 而 v 是栈顶的那个值。 这个函数将把这个值弹出栈。 跟在 Lua 中一样,这个函数可能触发一个 “newindex” 事件的元方法 (参见 §...
lua_setfield(L,1,"name");// 将栈顶的值设置为表中键 "name" 对应的值。// 此时栈顶的值是 "xmr",而索引 1/-2 指向的是刚创建的表,因此相当于为表添加了一个键 "name" 和对应的值 "xmr"。lua_pushstring(L,"Hello World");// 将字符串 "Hello World" 压入栈顶。lua_rawseti(L,-2,1)...
lua_setfield(L,-2,"string_1"); luaL_setfuncs(L,tuplelib,1); return 1; } 首先我们添加了一个t_nothing函数,然后我们修改了tuplelib,然后我们创建一个table,向里面放入了string_1和string_2两个键,接着我们使用luaL_setfuncs(L,tuplelib,1);把这个table设为一个共享upvalue,显然共享的范围是new和nothin...
1、lua_setfield(L, LUA_GLOBALSINDEX, key) 等价于:lua_setglobal(L,key) 含义:从全局表中找到key,然后用栈顶的值value,覆盖掉key原来的值。最后把栈顶的值弹出栈。 2、lua_setfield(L, index, key) 等价于: lua_pushstring(L, key); lua_pushnumber(L, value); lua_settable(L, index); 含义...
由于是进行哈希表操作(key是字符串),所以在Lua 5.4里会生成SETFIELD和GETFIELD指令,如下所示: $ lua-5.4.1/luac -l -l - local t = {}; t.k = 1; local a = t.k ^D main <stdin:0,0> (6 instructions at 0x7fa77ec062c0) 0+ params, 2 slots, 1 upvalue, 2 locals, 2 constants, 0...
lua_settable 设置栈上的table的某个字段,键和值为栈顶前两个对象。 lua_setfield 设置栈上的table的某个字段,值为栈顶对象。 lua_rawset 绕过元表设置table的元素,键和值为栈顶前两个对象。 lua_rawseti 绕过元表设置table的元素,值为栈顶对象。