lua的控制结构有 条件结构if
迭代的while、repeat、for
所有结构除了repeat以until结尾外其他都是以end结尾的
if的语法: if a<0 then a=0 end
if a<b then return a else return b end
也可以在中间使用elseif
while的语法: while a[i] do print(a[i]) i=i+1 end
repeat的语法: local sqr=x/2 repeat sqr=(sqr+x/sqr)/2 local error=math.abs(sqr^2-x) until error<x/1000
for的语法: for var=exp1,exp2,exp3 do <语句> end 循环体var从exp1变化到exp2,每次变化的节奏以exp3的大小为节奏。exp3如果不指定的话默认为1
for循环中定义的变量是局部变量,如果在循环结束以后访问有可能出错。如果需要访问的话,需要将这个变量的值保存在另一个变量中
for i,v in ipairs(a) do print(v) end 可以使用ipairs遍历数组的值,i代表索引v代表值
break与return用于跳出当前的块,break用于结束一个循环,return用于从一个函数中返回结果
这两个一般都是在语句的最后面。 如果想把return放到语句中间的话,需要用 do return end 来包起来
函数的多重返回值,如果函数a被当做另一个函数b中的参数,函数a有多重返回值但是它的位置不在最后一个,那么只会返回一个返回值。如果函数a的位置是在参数中的最后一个那么返回值会都返回的。
如果用return返回 函数a() 那么函数的返回值也会都返回
如果用小括号将函数a()包住,那么返回值也只返回一个 例如print((a()))
多重返回值的一个特殊函数unpack,可以将一个数组当做参数并从下标为1开始返回该数组的所有元素。