控制结构语句
<span style="font-size:18px;">if condition then
then-part
end
if condition then
then-part
else if condition then
then-part
else
else-part
end
while condition do
statements;
end
repeat
statements;
until condition</span>
<span style="font-size:18px;">--数值for
for i = 1,f(x) do --f(x)只会在循环中被调用一次
print(i)
end
for i = 10,1,-1 do
print(i)
end
--泛型for
for i,v in ipairs(tab) do --i索引,v值
print(i,v)
end
for k in pairs(tab) do
print(k)
end
--泛型for和数值for有两点相同:
--1.控制变量是局部变量
--2.不要修改控制变量的值
days = {"SUN","MON","TUE"}
--反转表
revDays = {}
for i,v in ipairs(days) do
revDays[v] = i
end</span>
Lua语法要求break和return只能出现在block的结尾一句(就是说,作为chunk的最后一句,或者在end之前,或者else之前,或者until之前),否则不执行return。
--函数实参与形参的匹配和赋值语句类似,多余的忽略,缺少的补nil
function foo(a,b)
print(a,b)
end
foo(3)
foo(3,4)
foo(3,4,5)
--返回多个结果值
l,h = string.find("hello","he")
print(l,h)
function maximum (tab)
local indx = 1
local max = tab[indx]
for i,val in ipairs(tab)
if val > max then
max = val
indx = i
end
end
return indx,max
end
调用可变参数的可变函数:
f = string.find
tab = {"hello","ll"}
pirnt(f(unpack(tab))) --unpack返回tab的所有元素作为参数
function unpack(tab,i)
i = i or 1
if tab[i] then
return tab[i],unpack(tab,i+1)
end
end
可变参数:
printRes = ""
function print(...)
for i,v in ipairs(arg) do
printRes = printRes .. tostring(v) .. "\t"
end
printRes = printRes .. "\n"
end
--固定参数加可变参数
function g(a,b,...)
end
--只想要string.find返回的第二个值(使用下划线):
local _,h = string.find(s,p)
--利用可变参数
function select(n,...)
<span style="white-space:pre"> </span>return arg[n]
end
print(select(1,string.find("hello","he")))