5.Lua表和函数语法

来源:互联网 发布:年轻人理财 知乎 编辑:程序博客网 时间:2024/06/05 18:06
用Lua表要打开库:
luaopen_table(L);
1.Lua表的处理
*表的插入 l插入  table.insert(a, pos,line) 
&不传pos想当于push_back
例子:
----------lua 表的插入
local tab1 = {"001","002","003"}
for i,v in ipairs(tab1) do
print("value=" .. v);
end

print("=========insert ============")
table.insert(tab1,3,"002-2")
for i,v in ipairs(tab1) do
print("value = " ..v);
end
print("============insert back======")
table.insert(tab1,"004");
for i,v in ipairs(tab1) do
print("value=" ..v);
end
print("==========remove===========")
table.remove(tab1,3) ---删除第三个
for i,v in ipairs(tab1) do
print("value = "..v);
end

print("===========不加个数默认最后一个=====")
table.remove(tab1)
for i,v in ipairs(tab1) do
print("value = " .. v);
end


print("=============哈希表==================")
注意哈希表要用pairs访问

local tab2 = {id=123,age=20}
tab2["name"] = "xiaoming" --直接加到后面
tab3["id"] = nil; -- 删除id
for k,v in pairs(tab2) do
print(k..":" ..v)
end


-----------------------遍历二维数组
local tab3 = {}
tab3[1] = {"namel","name2"};
tab3[2] = {"value1","value2"};

for k,v in pairs(tab3) do
for k2,v2 in pairs(v) do
print("k2 =" ..k2 .."v2="..v2)
end
end

2.Lua 函数
*函数语法
function func_name (arguments-list)
    statements-list;
end;
示例:
--lua函数
function test(p1,p2)
print(p1)
if(p1 == nil) then
p1="001"
end
if(p2 == nil) then
p2 = "002"
end
print("p1="..p1.."p2="..p2)
print("in test function")
end
3.Lua 参数
l普通参数
&lfunction test(para1,para2)
&l可变参数
&function test(...)
function test(para1,...)
  print(arg.n)
end
&例子:
-------可变参函数
function test1(...)
local len = table.getn(arg); --获取个数
print("int test1 function len = "..len);
for a=1,len do
print("arg"..a.."="..arg[a]) --取到所有参数
end
end


-----下面是函数调用
test(1,2)
test1(1,"name")

4.Lua 返回值
*l返回值
function test(para1,para2)
return 0
end
*l多返回值 (不建议使用,太特殊的用法,可通过直接返回表实现)
function test(para1,para2)
return 0,3
end
local k,v = test(1,2)
*例子:

----------函数带参数返回
function test2(...)
print("this is test2");
return 1,"name";
----可以同时返回多个值
end


local re,n= test2(123,"name")
print("re = "..re..","..n);

5.Lua 函数变量
*l函数可直接作为变量存储,也可以存入表中,类似js
local eventfun = function(p1)
  print("event fun = " .. p1)
end
eventfun(345)
例子:
--------函数调用
local fun1 = test2;
local re,n= fun1(123,"name")
print("re = "..re..","..n);

-------也可以在函数定义的时候直接赋给变量
local event = function (p1)
print("event = ".. p1);
end
event("key");


6.Lua 函数重载
*l类似JS,后面定义的函数会覆盖前面的
function func()
  print("my func 1")
end
func()
function func()
  print("my func 2")
end
func()
*例子:
-----------函数名重复调用,则最后一个定义的会覆盖前面的
function test2(...)
print("new test2");
end
test2();