while
代码示例及结果:
1 2 3 4 5 6 a = 0 while (a < 10 )do print (a) a = a + 1 end
for 1 2 3 for var=值1 ,值2 ,值2 do 循环体 end
从值1变化到值2,每次变化以值3为步长,执行一次循环体。表达式3不指定时默认为1.
代码示例及结果:
1 2 3 for i = 0 ,10 do print (i) end
1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10
变化范围包含值2
for 遍历table:
1 2 3 4 table = {"a" ,"b" ,"c" }for i,v in ipairs (table ) do print (i,v) end
repeat…until
执行循环体,直到条件语句成立
代码示例及结果:
1 2 3 4 5 i = 0 repeat print (i) i = i+1 until (i>10 )
1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10
和其他语言一样,break 可以跳出循环。
判断语句 if
代码示例及结果:
1 2 3 4 5 a = 10 if (a>0 )then print ("a>0" ) end
a>0
if…else 1 2 3 4 5 6 if (条件语句)then 条件为真时语句 else 条件为假时语句 end
代码示例及结果:
1 2 3 4 5 6 7 a = 10 if (a> 20 )then print ("a>20" ) else print ("a<=20" ) end
a<=20
if…elseif…else 1 2 3 4 5 6 7 8 9 10 11 12 if (条件一)then 条件一为真执行 elseif (条件二)then 条件二为真执行 elseif (条件N)then 条件N为真执行 else 以上都不满足的条件执行 end
代码示例及结果:
1 2 3 4 5 6 7 8 9 10 local score = 55 if (score >= 80 and score <= 100 )then print ("A" ) elseif (score < 80 and score>= 60 )then print ("B" ) else print ("C" ) end
c
函数 函数定义 1 2 3 4 optional_function_scope function ( argument1, argument2, argument3..., argumentn) function_body return result_params_comma_separated end
optional_function_scope 指定函数是全局还是局部函数,默认不写是全局,局部是local
function_name 函数名
argument 参数列表
function_body 函数体
result_params_comma_separated 返回值,可以返回多个值,逗号隔开
1 2 3 4 5 6 7 8 9 10 function max (num1,num2) if (num1 > num2) then result = num1 else result = num2 end return result end
lua 中可以将函数作为参数传递,作为回调函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 callback = function (errorId) print ("errorId:" ..errorId) end function login (userName,passworld,loginCallback) if (userName == "123" and passworld == "123456" ) then loginCallback(0 ) else loginCallback(-1 ) end end login("123" ,"123456" ,callback)
返回多值 如字符换查找,返回开始和结束的位置:(索引从1开始)
1 2 s,e = string .find ("hello world" ,"world" ) print (s,e)
1 2 3 4 5 6 7 8 9 10 11 12 13 function maxinum (array) local index = 1 local max = array[index] for i,v in ipairs (array) do if (v > max ) then index = i max = v end end return index,max end index,max = maxinum({3 ,77 ,34 ,22 ,566 ,7 ,32 ,6 }) print (index,max )
5 566
可变参数 Lua中可变参数和c,java中一样,用三个点…表示
1 2 3 4 5 6 7 8 function add (...) sum = 0 for i,v in ipairs {...} do sum = sum + v end return sum end print (add(1 ,2 ,3 ,4 ))
1 2 3 4 5 local arg = {...} length = #arg select ('#' ,...) select (n,...)