总结了下lua的使用,有点乱,也不完善,先帖出来吧,这也可以成为自己更新的动力,毕竟是有人看的。
1. 创建一个table并设置表的元素:
lua_newtable(L); lua_pushinteger(L,1); lua_pushstring(L,"abc"); lua_settable(L,-3); lua_setglobal(L,"t");
以上的代码等价于脚本:
t = {'abc'}
或者:
t = {}t[1] = 'abc'
2. 如何遍历table中的元素:
3. 如何获取table的长度:
t = {1,2,3} print(#t)
输出3
lua_objlen(L,index)
index为table所在的堆栈的位置。
4. 如何访问文件:
f = io.open('test.txt,'r') for line in f:lines() do print(line) end f:close()
5. 获取表的元素
t = {'abc',x=123,'def'} print(t[1])
输出:
abc
6. 如何通过lua API调用lua脚本里的函数
脚本中:
function f(a,b,c) return a..b..c end t = {x=1}
C代码中:
lua_getglobal(L,"f"); /* function to be called */ lua_pushstring(L, "how"); /* 1st argument */ lua_getglobal(L, "t"); /* table to be indexed */ lua_getfield(L, -1, "x"); /* push result of t.x (2nd arg) */ lua_remove(L, -2); /* remove 't' from the stack */ lua_pushinteger(L, 14); /* 3rd argument */ lua_call(L, 3, 1); /* call 'f' with 3 arguments and 1 result */ printf("get return value: %s\n",lua_tostring(L,-1));
会输出:
get return value: how12314
co = coroutine.create(function() print("hello,world") end) coroutine.status(co) print(coroutine.status(co)) --suspended coroutine.resume(co) --hello,world print(coroutine.status(co)) --dead
8. 如何移除栈中的一个元素:
通过lua_remove可以移除栈中指定索引中的元素--[[
comment 1
comment 2
...
]]
多行注释以“--[[”开始,以“]]”结束