2.4.4 - 控制结构

ifwhile、以及 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)。

控制结构中的条件表达式可以返回任何值。 falsenil 两者都被认为是假条件。 所有不同于 nilfalse 的其它值都被认为是真 (特别需要注意的是,数字 0 和空字符串也被认为是真)。

repeatuntil 循环中, 内部语句块的结束点不是在 until 这个关键字处, 它还包括了其后的条件表达式。 因此,条件表达式中可以使用循环内部语句块中的定义的局部变量。

return 被用于从函数或是 chunk(其实它就是一个函数)中 返回值。 函数和 chunk 可以返回不只一个值, 所以 return 的语法为

	stat ::= return [explist1]

break 被用来结束 whilerepeat、或 for 循环, 它将忽略掉循环中下面的语句段的运行:

	stat ::= break

break 跳出最内层的循环。

returnbreak 只能被写在一个语句块的最后一句。 如果你真的需要从语句块的中间 return 或是 break , 你可以使用显式的声名一个内部语句块。 一般写作 do return end 或是 do break end, 可以这样写是因为现在 returnbreak 都成了一个语句块的最后一句了。