--[[
print();
--]]
--[[
print(type("hello world"));
print (type(10));
print(type(10.2));
print(nil);
print(x);
print (s);
print(type(type));
--]]
--[[table
tab1={key01="value",key02="bb"};
print(tab1.key01,tab1.key02)
tab1=nil
tab1.tab1=nil;
print(tab1)
--]]
--boolean
--[[
if nil then
print(true)
else
print(false)
end
--]]
--numbwe
--[[
print(type(0.2e-55));
--]]
--"[["用表示多行字符串
--]]
--[[
print(html);--#号代表字符统计
print('6'+'3');
print('3.2e-1'*'6')
print('s'..'b');--".."代表字符拼接
tab1={}
tab2={key1="sdsd",key2="sbsb"}
tab3={"apple","banana","grape","pear"}
print(tab2.key1)
print(tab1);
print(tab3[1]) --lua数组下标从1开始
for tab,val in pairs(tab3) do
print(tab..":"..val);
end
tab3[1]="appleapple"
tab3[2]=nil; --'==nil时直接释放
tab3[100]="sssss"
for tab,val in pairs(tab3)do
print(tab..":"..val);
end
--表的下标不会填补空缺,可以不连续
--]]
--]]
--[[ 递归函数
s1=1;
function bb(n)
if(n==1)then
return s1;
else
return n*(bb(n-1)); --return的时候还要调用==5*bb(4)==5*4*3*2*1
end
end
print(bb(5));
bb2=bb;
print(bb2(6))
--]]
--[[
function x1(tab,fun) --函数可看作变量调用在tab获取键值对,在fun输出
for key,val in pairs(tab) do
fun(key,val);
end
end
tab={k1="11",k2="12"}
function fun(v,k)
print(v,k);
end
x1(tab,fun);
function fun1(v,k)
print(v..".."..k);
end
x1(tab,fun1);
x1(tab,function(v,k) --虚函数。在调用里面定义函数不用函数名
print(v,k)
end
)
--]]
--[[
a=5;a="hello";b=20;
print(a,b);
function test()
local b=10;
a=100;
end
test() --函数必须调用里面的变量才会起作用
--局部变量在当前语句结束时就会自动释放
print(a,b);
do
local a=10; --局部变量省资源
local b=11;
print(a,b);
end
print(a,b);
--]]
--[[
a,b=20,30; --变量可以连续赋值
print(a,b);
a,b=b,a; --可以交叉转换
print(a,b);
function test()
return 2,3; --函数可以返回多个值
end
c=test();
print(c);
c,d=test();
print(c,d);
a,b=20;
print(a,b)
--]]
--[[
a=1;
while (a<=20) do
if(a%2==1)then
print(a);
end
a=a+1;
end
--]]
--[[
for var=1,10,2 do --数值型var=start,end,step(递增值)默认为1
print(var);
end
tab={"av","fr","cv","ev"};
for de,dc in pairs(tab) do --泛型 相当于foreach,(pairs)
print(de,dc);
end
a=1;
repeat --相当于 do while;
--不过while满足条件时执行 until 满足条件 跳出
print(a);
a=a+1;
until(a>10)
--]]
--[[
for i=1,10 do
for j=1,i do
print(j);
end
end
for i=1,10 do
j=1;
while(j<=i)do
print(i);
j=j+1;
end
end
--]]
--[[
i=50
if(0) then
print("0 is true");
end
if(i==50) then
print("i==50");
else
print("i!=50");
end
if(i==50)then --注意格式if后面要加then;else不用
print("i==50");
elseif(i==100) then --elseif也要加
print("i==10");
else
print("want not write");
end
--]]
--[[
local function max(num1,num2)
if(num1>num2)then
return num1;
else
return num2;
end
end
print(max(50,40));
bb=max; --把函数赋值给变量
c1=max(5,1); --把函数的值赋值给变量
print(c1);
myprint=function(p)
print("this is"..p);
end
function add(a1,a2,x) --函数可作为参数传递
c=a1+a2;
x(c);
end
add(4,5,myprint);
function temp() --函数可返回多个值;
return 10,20,30;
end
a,b,c=temp();
print(a,b,c);
--]]
--[[
function average(...) --可变参数函数,还有print之类
res=0;
local arg={...} --arg是默认表 要来获取参数
for k,v in pairs(arg)do
res=res+v; --arg最后一个值表示表内参数个数,要先用本地定义来消除最后一值
end
print(res)
print(#arg)
end
average(1);
average(12,56);
average(13,56,58);
--]]
--[[
a=10;b=12; --关系运算符!= 等于~=
if(a~=b) then
print("not equip");
end
print(false and true); --逻辑运算符(|| && !) and or not
print(false or true)
print(not false);
tab={32,33,56} --#tab取得的是最大索引值
print(#tab);
tab=nil
tab={}
tab={key1="1",key2="2"} --而且必须数组索引 下标为1.2.3
print(#tab);
tab=nil;
tab={}
tab[1]=1;
tab[2]=2;
tab[4]=4;
print(#tab);
--]]
--[[
print("hello\nworld"); --转义字符\\==\; \",\'==",'
print("c:\\you\\hold");
print("my name is \"liming\"")
str="my name is SiKi" --字符串操作
str1=string.upper(str); --转大写
str2=string.lower(str); --转小写
str3=string.gsub(str,"i","666",1); --替换(替换几次)
index=string.find(str,"name"); --索引查询
str5=string.reverse(str); --颠倒
print(str1,str2,str3,"\n",index,str5)
str6=string.format("%02d+%d=%d",1,2,(1+2));
print(str6);
str7=string.format("最后%s==%s","终于","爱");
print(str7);
--]]
--[[
s1=string.char(97,98,55); --数字转字符
s2=string.byte("Ab"); --字符转数字 默认为第一个
print(s1,s2);
str=string.len("agb");
print(str);
for word in string.gmatch("he is @teacher","%@") do --正则
print(word);
end
print(str4);
--]]
--[[
tab={};
for i=-2,2 do --tab表的索引可以为负数
tab[i]=i;
end
for i=-2,2 do
print(tab[i]);
end
print(tab.value);
--]]
--[[
array={{},{},{}}
for i=0,4 do --多维数组创建
array[i]={};
for j=0,2 do
array[i][j]=string.format("%d%d",i,j);
end
end
for i=0,4 do
for j=0,2 do
print(array[i][j]);
end
end
--]]
--[[
array={"lua","C++","oc"} --迭代器,pairs 遍历所有键值对,ipairs遍历所有索引 当值等于nil是停止
for o,v in pairs(array) do
print(o,v);
end
array[2]=nil;
for o,v in ipairs(array) do
print(o,v);
end
function square(state,control) --自定义 迭代函数(状态函数,控制函数)
if(control<=state) then
control=control+1;
return control,control*control;
end
end
for d,f in square,9,0 do
print(d,f)
end
--]]
--[[
tab1={};
tab1["s1"]="s1";
tab1[2]="s2";
for v,k in pairs(tab1) do
print(v,k);
end
tab2=tab1; --table内存使用特性,当把定义好的table1赋值给 table2时,两个同时应用同一个内存区域,并不是两个区域同种类型
tab1=nil;
for v,k in pairs(tab2) do
print(v,k);
end
--]]
--[[
mytab={"java","oc","a","a++"}
print(table.concat(mytab));
mytab[#mytab+1]="boo";
for v,k in pairs(mytab) do
print(v,k);
end
table.insert(mytab,"PHP");
for v,k in pairs(mytab) do
print(v,k);
end
table.insert(mytab,2,"F++");
for v,k in pairs(mytab) do --insert指定索引添加时索引后面 会向后移动
print(v,k);
end
table.remove(mytab,2)
for v,k in pairs(mytab) do --remove指定索引会向前移动
print(v,k);
end
mytab[2]=nil; --赋值nil 制定值会为 nil
for v,k in pairs(mytab) do
print(v,k);
end
--]]
--[[
mytab={"a1","b2","c2"} --table 排序
table.sort(mytab);
for v,k in pairs(mytab) do
print(v,k);
end
mytab1={54,85,96,1}
print(#mytab1)
--]]
--[[
function max(x) --自定义取得最大值函数
c=-10^10000;
for i=1,#x do
if(x[i]>=c) then
c=x[i];
end
i=i+1;
end
return c;
end
--]]
--[[
function max2(xx) --用迭代和遍历取得最大值
local cc=-1000;
for v,k in pairs(xx) do
if(cc<=k)then
cc=k;
end
end
return cc;
end
print(max2(mytab1));
--]]
--[[
table.sort(mytab1);
print(mytab1[#mytab1]);
--]]