--這裡是註釋 --[[ 功能備註:lua快速體驗,學習,瞭解語法 創建時間:2020-6-12 創建人:pcw --]] --【數據類型與輸出】 print(" "); print("configlab") print(b);--輸出:nil print(type(b));--輸出:nil pri ...
--這裡是註釋 --[[ 功能備註:lua快速體驗,學習,瞭解語法 創建時間:2020-6-12 創建人:pcw --]] --【數據類型與輸出】 print("--------------------------------"); print("configlab") print(b);--輸出:nil print(type(b));--輸出:nil print((type(b)=="nil")) --輸出:true b=23.5 print(b); print(type(b));--輸出:number print("--------------------------------"); print([[ 你好 lua是一個神奇的東西,可以嵌入到很多語言 ]]);--這是格式化字元串 print("config的長度="..#"config"); print("--------------------------------"); --【變數】 p1=2;--全局變 local p2=2;--全局變數 function testparam() p3=2; local p4=3; end testparam(); print(p1,p2,p3,p4);--輸出多個值 if(true) then local p1=3;--局部變數,不影響全局變數 p2=3;--全局變數 end print(p1,p2); print("--------------------------------"); --【賦值】 pr1,pr2=20,"abc"; --可以同時賦值,但是類型不一樣 print(pr1,pr2); print(type(pr1),type(pr2)); print("--------------------------------"); --【特殊的值】 if(0) then print("if中0代表true"); end if(nil) then print("if中nil代表true"); else print("if中nil代表false"); end print("--------------------------------"); --【table表】 table1={username="user798",group="2年級"} print(type(table1)); for k1,v1 in pairs(table1) do print(k1.."-"..v1); end; print("--------------------------------"); --【local 創建table】 local table2={}; table2["k2"]="v2"; k3=10; table2[k3]=20; table2[k3]=table2[k3]+20; for k2,v2 in pairs(table2) do print (k2.."-"..v2); end; print("--------------------------------"); --【local 創建非鍵值對的table 】 (lua中數組索引從1開始,而不是從0開始) local table3={"中國","美國","德國"}; for k3,v3 in pairs(table3) do print (k3.."-"..v3); end; print("--------------------------------"); --【函數】 function getSqure(n,IsSorV) if(IsSorV==true) then return n*n; else return n*n*n end end; print("s="..getSqure(3,true)); print("v="..getSqure(3,false)); print("--------------------------------"); --【匿名函數】(涉及參數字元串相加的,必須保證函數有return返回,否則會報錯) function dynamicProcess(n,IsSorV,inputFun) return inputFun(n,IsSorV) end print("匿名函數計算s="..dynamicProcess(4,true, function(n,IsSorV) if(IsSorV==true) then return n*n; else return n*n*n end end ));--輸出:匿名函數計算s=16 print("--------------------------------"); --【函數返回多個值】 print("開始體驗函數返回多個值"); s_begin,s_end=string.find("http://www.cnblogs.com/taohuadaozhu",":"); print(s_begin,s_end); s_begin,s_end=string.find("http://www.cnblogs.com/taohuadaozhu","taohuadaozhu"); print(s_begin,s_end); print("--------------------------------"); --【可變參數】 function average(...) local args={...}; local result=0; for i,v in ipairs(args) do result=result+v; end return result/#args;--#args代表數組的元素的個數 end print("可變參數average(1,2,3)="..average(1,2,3)); print("--------------------------------"); --【for迴圈】 function fortest(...) for iIndex3=1,select("#",...) do --數組索引必須從1開始,否則會拋異常 local arg=select(iIndex3,...); print("for迴圈test="..arg); end end fortest(3,6,9,12); print("--------------------------------"); --【不等於】 if(1~=2) then print("1!=2的表達式是1~=2"); end print("--------------------------------"); --【邏輯運算】 bool1=true; bool2=false; if(bool1 or bool2) then print("bool1 or bool2 是符合if的"); end if(bool1 and bool2) then print("bool1 and bool2 是符合if的"); else print("bool1 and bool2 不符合if的"); end if(not bool2) then print("not bool2 符合if的"); end print("--------------------------------"); --【while迴圈】 i1=0; while(i1<5) do print("第"..i1.."次輸出"); i1=i1+1;--不支持i1++這種寫法. end; print("--------------------------------"); --【迴圈中沒有continue,但等效的方法】(repeat until true, 重覆執行知道條件為真). i2=0; while(i2<3) do print("當前i2="..i2..",loop.begin"); repeat if i2%2==0 then print("當前i2="..i2..",遇到4的倍數都不往下走,類似continue的效果"); i2=i2+1;--不支持i2++這種寫法 break else print("當前i2="..i2..",loop.end"); i2=i2+1;--不支持i2++這種寫法 end until true end print("--------------------------------"); --[[ 模擬continue的輸出: 當前i2=0,loop.begin 當前i2=0,遇到4的倍數都不往下走,類似continue的效果 當前i2=1,loop.begin 當前i2=1,loop.end 當前i2=2,loop.begin 當前i2=2,遇到4的倍數都不往下走,類似continue的效果 ]] print("--------------------------------"); --【常用函數】 date = 2; month = 1; year = 2020 print(string.format("日期格式化 %02d/%02d/%03d", date, month, year)) --線程(thread)可同時運行多個線程,協程(coroutine) 同一時間只能運行一個,掛起時才停止 --userdata(自定義類型):用戶自己在c,c++中定義的指針或結構體類型存儲到userdata
下麵是結果:
configlab
nil
nil
true
23.5
number
--------------------------------
你好
lua是一個神奇的東西,可以嵌入到很多語言
config的長度=6
--------------------------------
222nil
23
--------------------------------
20abc
numberstring
--------------------------------
if中0代表true
if中nil代表false
--------------------------------
table
username-user798
group-2年級
--------------------------------
10-40
k2-v2
--------------------------------
1-中國
2-美國
3-德國
--------------------------------
s=9
v=27
--------------------------------
匿名函數計算s=16
--------------------------------
開始體驗函數返回多個值
55
2435
--------------------------------
可變參數average(1,2,3)=2
--------------------------------
for迴圈test=3
for迴圈test=6
for迴圈test=9
for迴圈test=12
--------------------------------
1!=2的表達式是1~=2
--------------------------------
bool1 or bool2 是符合if的
bool1 and bool2 不符合if的
not bool2 符合if的
--------------------------------
第0次輸出
第1次輸出
第2次輸出
第3次輸出
第4次輸出
--------------------------------
當前i2=0,loop.begin
當前i2=0,遇到4的倍數都不往下走,類似continue的效果
當前i2=1,loop.begin
當前i2=1,loop.end
當前i2=2,loop.begin
當前i2=2,遇到4的倍數都不往下走,類似continue的效果
--------------------------------
--------------------------------
日期格式化 02/01/2020