--这里是注释--[[功能备注: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;--全局变量
functiontestparam()
p3=2;local p4=3;endtestparam();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("--------------------------------");--【函数】
functiongetSqure(n,IsSorV)if(IsSorV==true) then
return n*n;else
return n*n*nend
end;print("s="..getSqure(3,true));print("v="..getSqure(3,false));print("--------------------------------");--【匿名函数】(涉及參數字符串相加的,必須保證函數有return返回,否则会报错)
functiondynamicProcess(n,IsSorV,inputFun)returninputFun(n,IsSorV)end
print("匿名函数计算s="..dynamicProcess(4,true,function(n,IsSorV)if(IsSorV==true) then
return n*n;else
return n*n*nend
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("--------------------------------");--【可变参数】
functionaverage(...)local args={...};local result=0;for i,v in ipairs(args) doresult=result+v;end
return result/#args;--#args代表数组的元素的个数
end
print("可变参数average(1,2,3)="..average(1,2,3));print("--------------------------------");--【for循环】
functionfortest(...)for iIndex3=1,select("#",...) do --数组索引必须从1开始,否则会抛异常
local arg=select(iIndex3,...);print("for循环test="..arg);end
endfortest(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