lua 学习
1、lua 只有false和nil视为假,其他都为真
2、lua 没有整数类型,只有浮点型,一般用双精度浮点型表示整形数
3、可以用一对匹配的双括号界定一个字母字符串,类似于块注释
[[
abc
deeff
]]
4、lua支持运行时字符串与数字的自动转换
print("11"+1);
12
print(11 .. 22);
1122
tonumber - 字符串转数字
tostring -数字转字符串
#获取字符串长度
5、table 关联数组
是对象
初始化 a = {}
可以用数字索引,也可以用其他类型索引数字索引从1开始
#a代表最后一个索引
for i=1,#a do
print(i);
end
lua 用nil作为数组的结束标志
a = {x=10,y=11}
print(a.x);
10
a.x相当于a["x"]
{x=10,y=11}等价于{["x"]=10,["y"]=11}
6、操作符 .. ^和是右结合,其他都是左结合
7、交换两个值
x,y=y,x
8、代码块do ... end
do
在lua终端交互模式下,使用local 变量时,就用到它
end
9、if语句
if then
elseif then
else
end
10、repeat ... until
相当于do ... while
11、while
while ... do
end
12、for循环
数字型
for var=exp1,exp2,exp3 do
循环体
end
var 从exp1,以exp3位步长循环,直到exp2,exp3默认1
无限循环
for i=1,math.huge do
end
泛型
for i in v do .. end
遍历table
for i,v in ipairs(a) do
print(i,v)
end
13、函数参数默认值
function test(n)
n = n or 1
count = count + n
return count
end
14、unpack 用于向函数传入动态数量参数
f=string.find
a={"hello", "ll"}
f(unpack(a))
3,4
15、变长参数
function foo (a,b ...)
local arg = {...};arg.n = select("#", ...)
end
16、闭合函数
function (n1,n2) return n1+n2 end
17、非全局的函数
Lib ={}
Lib.foo = function (x,y) return x+y end
Lib.goo = function (x,y) return x-y end
Lib = {
foo = function (x,y) return x+y end,
goo = function (x,y) return x-y end
}
Lib = {}
function Lib.foo = (x,y) = return x+y end
function Lib.goo = (x,y) = return x-y end
18、尾递归
一个函数调用另一个函数之后,再无其他事情可做
function foo(n)
if n > 0 then return foo(n-1) end
end
19、迭代器与泛型for
a={"one","two","three"}
for i,v in ipairs(a) do
print(i,v)
end
for var_1 ...,var_n in <eexplist> do block end
<explist> = f,s,var
f,迭代函数,s,恒定状态,var,控制变量的初值