快速體驗,學習lua(一種可嵌入c++,c#,android,object-c等並進行互調支持熱更新的腳本)的入門調試系列(1)

--這裏是註釋
--[[
功能備註: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


 

下面是結果:c++

configlab數組

nil函數

niloop

true學習

23.5lua

numberspa

--------------------------------線程

  你好3d

  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

相關文章
相關標籤/搜索