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,控制变量的初值

原文地址:https://www.cnblogs.com/yanwei-wang/p/6003316.html