在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
lua的下载 http://luabinaries.sourceforge.net/ 解压完后 在同目录下建立test.lua print("hello lua"); for i=1,10,2 do print(i) end 执行 E:\lua>lua53 test.lua hello lua 1 3 5 7 9
lua的值和类型 字符串和布尔 test.lua a="abc" b=false c=true d='ds' e=3.1415926 print(a,b,c,d,e); E:\lua>lua53 test.lua abc false true ds 3.1415926 lua的比较操作符
--数字操作符的操作数如果是字符串会自动转换成数字 a=1+1 b=1+'1' --c=1+'c' 出错 print(a,type(a),b,type(b),a==b) --2 number 2.0 number true --比较操作符不同于数学操作符,不会对操作数的类型自动转换 print(1=='1') --false print({'a'}=={'a'}) --false print(tonumber('F',16)) --15
lua中的table ]] 数组 a={10,20,"lua"} --[[ 或者 a={} a[1]=10 a[2]=20 a[3]="lua" ]] print(a[1],a[2],a[3]); E:\lua>lua53 test.lua 映射 a={ ["key1"]=10, [2]=false } --[[ 或者 a={} a['key1']=10 a[2]=false ]] print(a.key1,a[2]); lua函数 function add(a,b) return a+b end add1=function ( a,b) return a+b end print(add(1,2)) print(add1(1,2)) E:\lua>lua53 test.lua 函数的多返回值 function add(a,b) return a+b,a-b,a*b end r=add(2,5); print(add(2,5)) print(r,type(r)); E:\lua>lua53 test.lua 可以在Lua中创建一个具有可变参数的函数...作为它的参数 function average(...) result = 0 local arg={...} for i,v in ipairs(arg) do result = result + v end return result/#arg end print("The average is",average(1,2,3,4,5,6)) E:\lua>lua53 test.lua 多变量的赋值和值的交换 a,b=1,2 print(a,b) a,b=b,a print(a,b) c,d=1 print(c,d) e,f=1,2,3 print(e,f) g,h=1, print(g,h) E:\lua>lua53 test.lua 1 2 2 1 1 nil 1 2 nil nil 多重赋值时,lua会先计算所有表达式的值
local a= {1,2,3} local i=1 i,a[i]=i+1,5 print(i) --2 for k1,v1 in ipairs(a) do print(k1,v1) end --[[ 2 1 5 2 2 3 3 ]]
lua计算完所有表达式的值后,上面最后一个赋值语句成为 i,a[1]=2,5
lua的表达式逻辑操作符 只要操作数不是nil或者false,逻辑操作符就认为操作数为真
print(1 and 5) --5 print(1 or 5) --1 print(not 0) --false print(not 1) --false print('' or 1); --''
print(true and false) print(true and true) print(true or false) print(not true) print(not false) --字符串拼接 print("hello".." world"); E:\lua>lua53 test.lua false true true false true hello world 作用域 function fun() a=1 local b=2 end fun() print(a,b) E:\lua>lua53 test.lua 1 nil
local x = 10 if true then local x=x+1 print(x) do local x=x+1 print(x) end print(x) end print(x) --[[ 执行结果 11 12 11 10 ]]
lua的流程控制 a=1 if(a>1) then print("a>1") elseif(a<1) then print("a<1") else if(a==1) then print("a=1") else print("a is not num") end end a必须是数字,否者不能参与比较 while local i=0 while i<10 do print(i) i=i+1 end repeat i=1 repeat print(i); i=i+1 until(i>5) for循环 for i=1,10 do print("i="..i) end for j=1,10,2 do print("j="..j) end E:\lua>lua53 test.lua i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 j=1 j=3 j=5 j=7 j=9 for的泛型遍历 迭代器 迭代器 http://www.cnblogs.com/HKUI/articles/6757372.html a={ ['a']='ajax', [100]=true, [1]=1, [2]=3 } for k,v in pairs(a) do print(k,v) end print("----------------------") for k1,v1 in ipairs(a) do print(k1,v1) end 2次运行,对于pairs顺序完全是没有保障的 E:\lua>lua53 test.lua 100 true 1 1 2 3 a ajax ---------------------- 1 1 2 3 E:\lua>lua53 test.lua 100 true a ajax 2 3 1 1 ---------------------- 1 1 2 3 a={ ['a']='ajax', [99]=999, [100]=true, [2]=3 } for k,v in pairs(a) do print(k,v) end print("----------------------") for k1,v1 in ipairs(a) do print(k1,v1) end E:\lua>lua53 test.lua a ajax 100 true 2 3 99 999 二维或多维数组 arr={ {'a','b','c'}, {'aa','bb','cc'}, {['a']='ajax'} } for k,v in pairs(arr) do for k1,v1 in pairs(v) do print(k..'-'..k1,v1) end end E:\lua>lua53 test.lua 1-1 a 1-2 b 1-3 c 2-1 aa 2-2 bb 2-3 cc 3-a ajax lua里的包 同目录下有 foo.lua,test.lua local class={} function class.foo( a,b ) return a+b end return class test.lua local c=require("foo") print(c); print(c.foo(1,2)) for i=1,2 do print(require("foo")) end print("-------------") for i=1,2 do print(dofile("foo.lua")) end E:\lua>lua53 test.lua table: 00038798 3 table: 00038798 table: 00038798 ------------- table: 0003bcf8 table: 0003bcd0
lua的系统库 local t={} for i=1,5 do table.insert(t,i..'_'..i) end for k,v in pairs(t) do print(k..'='..v) end print("----------"); table.remove(t,2) for k,v in pairs(t) do print(k..'='..v) end for k,v in pairs(table) do print(k,v) end 运行 E:\lua>lua53 test.lua 1=1_1 2=2_2 3=3_3 4=4_4 5=5_5 ---------- 1=1_1 2=3_3 3=4_4 4=5_5 sort function: 62995870 move function: 62995940 insert function: 62995e00 remove function: 62995c40 pack function: 62995160 concat function: 62995fa0 unpack function: 62994fc0 对于映射的删除需用赋值nil local t={} t.a="ajax" t.b="bbc" for k,v in pairs(t) do print(k,v) end table.remove(t,a) print("------------"); for k,v in pairs(t) do print(k,v) end print("---------") t.a=nil for k,v in pairs(t) do print(k,v) end 执行 E:\lua>lua53 test.lua a ajax b bbc ------------ a ajax b bbc --------- b bbc 数组长度和字符串长度 local t={ ['a']="ajax", ['b']="bbc", [1]=11, [2]=222 } print("t len= "..#t); local t1={1,2,3,4} print("t1 len= "..#t1) local str="php7" print("str len= "..#str) E:\lua>lua53 test.lua t len= 2 t1 len= 4 str len= 4 tonumber,tostring a="3.14" print(a,type(a)); a=tonumber(a) print(a,type(a)); b=3.1415 print(b,type(b)) b=tostring(b) print(b,type(b)) person="tom" print(string.format("hello %s",person)) E:\lua>lua53 test.lua 3.14 string 3.14 number 3.1415 number 3.1415 string hello tom lua字符串操作 1.单引号之间的字符 test.lua str1='php' str2="javascript" str3=[[php7]] str4="php \" best\" " str5='php "best"' str6=[[php "best"]] print("str1="..str1) print("str2="..str2) print("str3="..str3) print("str4="..str4) print("str5="..str5) print("str6="..str6) E:\lua>lua53 test.lua str1=php str2=javascript str3=php7 str4=php " best" str5=php "best" str6=php "best" 字符串操作方法 for k,v in pairs(string) do print(k) end E:\lua>lua53 test.lua gsub gmatch match len byte char lower sub format upper dump rep find unpack packsize pack reverse
test.lua s="php5 pHp7" lower_s=string.lower(s) upper_s=string.upper(s) gsub=string.gsub(s,'php','python') reverse=string.reverse(s) rep=string.rep('p',3) print("lower_s="..lower_s) print("upper_s="..upper_s) print("gsub="..gsub) print("reverse="..reverse) print("rep="..rep) E:\lua>lua53 test.lua lower_s=php5 php7 upper_s=PHP5 PHP7 gsub=python5 pHp7 reverse=7pHp 5php rep=ppp
|
请发表评论