首页 > 代码库 > lua how to
lua how to
总结了下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‘
lua_setglobal时,新创建的table仍然在栈顶。
2. 如何遍历table中的元素:
local tt = {1,2,3}
for k,v in ipairs(tt) do
print(k,v)
end
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()
"*n": 读取一个数值,注意数值在文件中也是以字符串的形式保存的。
"*a": 从当前位置开始读取所有文件内容。
"*l": 读取一行字符串,不指定参数的read即相当于read(‘*l‘)
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
7. 如何使用多任务:
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可以移除栈中指定索引中的元素具体的示例见:如何通过lua API调用lua脚本里的函数
9. 如何添加多行注释
对于多行注释,如何避免每行的开始都添加“--”?可以用下面的方法:
--[[
comment 1
comment 2
...
]]
多行注释以“--[[”开始,以“]]”结束
lua how to
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。