lua教程(二) 循环、流程控制、函数和运算符

lua 循环

循环

while 循环

原型:

1
2
3
while condition do

end

for 循环

原型:

1
2
3
for var=exp1,exp2,exp3 do

end

repeat 循环

原型:

1
2
3
repeat

until condition

while 循环不同,repeat 循环至少会执行一次循环体。

流程控制

break 语句

break 语句用于跳出当前循环。

goto 语句

goto 语句用于无条件跳转到指定标签处执行代码。标签的定义格式为 ::label::,可以在代码中使用 goto label 来跳转到该标签处执行代码。

可以使用 goto 语句实验类似于 continue 的功能,例如:

1
2
3
4
5
6
7
for i = 1, 10 do
if i ~= 5 then
goto continue
end
print(i)
::continue::
end

只会打印数字 5,因为当 i 不等于 5 时,会跳过打印语句直接进入下一次循环。

流程控制

原型:

1
2
3
4
5
6
7
if condition then
-- code
elseif condition then
-- code
else
-- code
end

函数

原型:

1
2
3
function functionName (arg1, arg2, ...)
-- body
end

可以在 function 前加 local 来定义局部函数。

lua 接受可变参数,可以使用 ... 来表示可变参数,在函数体内可以使用 {...} 来获取一个包含所有可变参数的表,或者使用 select 函数来获取特定位置的可变参数,例如 select(1, ...) 获取第一个可变参数,select(2, ...) 获取第二个可变参数,以此类推。
select('#', ...) 可以获取可变参数的数量。

lua 可以返回多个值,例如:

1
2
3
4
5
function example()
return 1, 2, 3
end
local a, b, c = example()
print(a, b, c) -- 输出:1 2 3

如果函数返回的值比接收的变量多,超出的部分会被丢弃;如果函数返回的值比接收的变量少,缺少的部分会被赋值为 nil,例如:

1
2
3
4
5
function example()
return 1, 2
end
local a, b, c = example()
print(a, b, c) -- 输出:1 2 nil

lua 运算符

算术运算符

+, -, *, /, %, ^, //
其中 ^ 表示幂运算,// 表示整数除法。

关系运算符

==, ~=, <, >, <=, >=

逻辑运算符

and, or, not

三目运算:可以使用 andor 来实现短路求值,例如:

1
2
3
local a = true
local b = a and "hello" or "world"
print(b) -- 输出:hello

在这个例子中,atrue,所以 b 的值 是 “hello”;如果 afalse,那么 b 的值 就是 “world”。

其他运算符

.. 表示字符串连接运算符,例如:

1
2
3
4
local a = "hello"
local b = "world"
local c = a .. " " .. b
print(c) -- 输出:hello world

# 表示长度运算符,可以用于字符串和表格,例如:

1
2
3
4
local a = "hello"
local b = {1, 2, 3}
print(#a) -- 输出:5
print(#b) -- 输出:3

# 用的是 string.len 函数来计算字符串的长度,使用的是 table.maxn 函数来计算表格的长度。

1
2
3
4
local a = "abc"
local b = "你好"
print(#a) -- 输出:3
print(#b) -- 输出:6

lua教程(二) 循环、流程控制、函数和运算符
https://wttch96.github.io/post/lua/lua教程2.html
作者
Wttch
发布于
2026年3月24日
许可协议