if、 while、以及 repeat 这些控制结构符合通常的意义,而且也有类似的语法:
stat ::= while exp do block end stat ::= repeat block until exp stat ::= if exp then block {elseif exp then block} [else block] end
Lua 也有一个 for 语句,它有两种形式(参见 §2.4.5)。
控制结构中的条件表达式可以返回任何值。 false 和 nil 两者都被认为是假条件。 所有不同于 nil 和 false 的其它值都被认为是真 (特别需要注意的是,数字 0 和空字符串也被认为是真)。
在 repeat–until 循环中, 内部语句块的结束点不是在 until 这个关键字处, 它还包括了其后的条件表达式。 因此,条件表达式中可以使用循环内部语句块中的定义的局部变量。
return 被用于从函数或是 chunk(其实它就是一个函数)中 返回值。 函数和 chunk 可以返回不只一个值, 所以 return 的语法为
stat ::= return [explist1]
break 被用来结束 while、 repeat、或 for 循环, 它将忽略掉循环中下面的语句段的运行:
stat ::= break
break 跳出最内层的循环。
return 和 break 只能被写在一个语句块的最后一句。
如果你真的需要从语句块的中间 return 或是 break ,
你可以使用显式的声名一个内部语句块。
一般写作 do return end
或是 do break end
,
可以这样写是因为现在 return 或 break 都成了一个语句块的最后一句了。