lua 基础语法

来源:互联网 发布:中印陆军对比知乎 编辑:程序博客网 时间:2024/06/03 17:33
--[[print("Hello wc hahaha");a = 10;   --全局变量local b = tostring(a..2); --局部变量dofile("test.lua");print(type(b));local c = nil;local d = "wwe" .. "dad"print(string.sub(d, 2, 3))   --获取子串  lua从1开始取的 所以取出的 ‘we’local html=[<html></html>]local e, f  = string.find(html,"html");print("e="..e .."f=".. f);   --查找第一个字符串的起始位置if(1 == 1 and 1 == 3) then       --if基本条件语句 or或者  and并且   elseif 后面跟thenprint("1 == 1");elseif(2==2) thenprint("2==2");elseprint("1 != 3");endlocal  i =100             --while语法 循环while(not(i < 0)) doprint("i =".. i);i = i - 1end]]--[[local k = 100    --相当于do..while方法repeatk = k + 1print("k=" ..  k)until  k > 100for list = 1,10 do   --for数值遍历print("list="..list)endlocal vec={"mon", "sun", "tus", "fird"}   --数组下标从1开始for i, v  in pairs(vec) do  --泛型遍历  pairsprint(i.. ":" .. v)endlocal suzhu={[1]="a", [2]="b", [4]="d"}   --数组  for i, v  in ipairs(suzhu) do  --泛型遍历  ipairs标准的数组从1,2,3...print(i.. "-:-" .. v)endlocal tab1 = {'001', "002", "003"}for i, v in ipairs(tab1) doprint(i.."=".. v)endprint("=======insert========")table.insert(tab1, 3, "002_2")    --从第三个位置插入 原先的值往后面移for i, v in ipairs(tab1) doprint(i.."=".. v)endprint("=======insert back========")table.insert(tab1, "004")       --默认插入到表的末尾处for i, v in ipairs(tab1) doprint(i.."=".. v)endprint("=======remove ========")table.remove(tab1)       --默认移除表的末尾处的值for i, v in ipairs(tab1) doprint(i.."=".. v)end--]]--[[local tab2 = {id=123, age=20}   --哈希表带有键值和keytab2["name"] = "xiaoming"tab2["id"] = nil     --此处如果将id的键值赋值为nil 则将该值删除了for i, v in pairs(tab2) doprint(i.."=".. v)endlocal tab3 = {}    --二维表tab3[1]={"tom", "rose"}tab3[2]={"val1", "val2"}for i, v in pairs(tab3) do   --多维遍历表的操作for  i2, v2 in ipairs(v) doprint(i..":-" .. i2.. "=" .. v2)endendfunction test(p1,...) --函数local len = table.getn(arg)   --可以知道传参数print("arg len is ".. len)print(p1)if(p1 == nil) thenprint("p1 == nil")else print("p1 != nil")endprint("void test function")return 2, "tom"    --函数可以返回多值   endprint(test(222, 002, "a"))   --可以接多个值local fun1 = testprint("*********************")print(fun1(222, 002, "a")) --可以将函数传给变量样赋值给另外一个变量local fun2 = function(p1)print("fun2" .. p1)endfun2("key")function fun2(...)print("test nil")endfun2("123")  --函数重载   后面定义相同的函数会将前面同名的函数给屏蔽掉(弊端无法知道调用那个函数)print("--lua调用c--lua调用c++ 结合部分----------------") --c++ 向lua堆栈写东西 通过lua堆栈 lua通过lua全局标量获取返回lua堆栈再到c++--]]--lua传递数字给c++--cGivelua("wangcheng",  22, 1)  --lua传递一个字符串参数给c++   lua  ture  为0   lua 除了 false 和 nil 之外都是true--local arr={"a001", "a002", "a003"}--cTestArr(arr)  --lua传递数组给c++调用--[[local tab = {name = "xiaoming", age= "22", id="23143"}cTestTable(tab, 123)print("&&&&&&&\n")local a, b = cTestRe()print("a = "..a.."b="..b)--]]--for key, value in pairs(cTestRe()) do --print(key.."="..value.."\n")--endwidth = 1280print("ID:"..TOM)config ={testtile = "wc",height =1080}for key, value in pairs(person) doprint(key.."="..value)endfunction errfun()print("lua is error")endfunction event(p1, p2)   --c++调用lua的函数 c++传参给luaprint("c++ call lua function    "..p1.."==")for key, value in pairs(p2)  doprint(key.."->"..value)endlocal re={id=234}return re--lua传回返回值给c++调用end