lua ruturn 和goto
function 语句
function 语句用于定义函数,可以指定函数名、参数、返回值、函数体。
function add(a, b)
return a + b
end
print(add(1, 2)) -- 3
return 语句
return 语句用于返回函数的执行结果。
return 只能出现在,语句块的结尾,或是 end,else 和 until 的前面。
function add(a, b)
return a + b
end
print(add(1, 2)) -- 3
function foo()
return 1, 2, 3
end
local a = foo();
local x, y, z = foo();
local i, j, k, m, n = foo();
print(a, x, y, z, i, j, k, m, n) --1 1 2 3 1 2 3 nil nil
break
break 只用于循环结构 for,repeat,while。break 充当阈[yù]值的作用,到了点,就
跳出循环。
for i = 1, 10 do
if i == 5 then
break
end
print(i)
end
goto
goto 语句用于在代码中跳转到指定的位置。
goto 语句不能跨越函数,也不能跳入局部变量的作用域。
lua 虽然没有提供 continue 逻辑,contiune 的逻辑本质就是过滤,可以能过合理的安
排逻辑解决,或是采用 goto 模仿 continue 逻辑。
goto 语句,可以跳到程序中的任意 Label 标号,其 Label 的书写方式 ::name:: 。注意
标号处的语句是依次执行的。不要理解为 Label 后的语句是函数,等待被调用。
-- 定义程序的起始点,玩家最初进入 room1(房间1)
goto room1
-- 定义 room1 的标签
::room1::
do
-- 打印当前所在的房间
print("in room 1")
-- 读取用户输入移动方向
local move = io.read()
-- 根据用户输入的方向进行判断
if move == "south" then
-- 如果输入为 "south",跳转到 room3
goto room3
elseif move == "east" then
-- 如果输入为 "east",跳转到 room2
goto room2
else
-- 如果输入为无效的移动方向,打印错误信息
print("invalid move")
-- 重新进入 room1,保持在同一房间
goto room1
end
end
-- 定义 room2 的标签
::room2::
do
-- 打印当前所在的房间
print("in room 2")
-- 读取用户输入移动方向
local move = io.read()
-- 根据用户输入的方向进行判断
if move == "south" then
-- 如果输入为 "south",跳转到 room4
goto room4
elseif move == "west" then
-- 如果输入为 "west",跳转回 room1
goto room1
else
-- 如果输入为无效的移动方向,打印错误信息
print("invalid move")
-- 重新进入 room2,保持在同一房间
goto room2
end
end
-- 定义 room3 的标签
::room3::
do
-- 打印当前所在的房间
print("in room 3")
-- 读取用户输入移动方向
local move = io.read()
-- 根据用户输入的方向进行判断
if move == "north" then
-- 如果输入为 "north",跳转回 room1
goto room1
elseif move == "east" then
-- 如果输入为 "east",跳转到 room4
goto room4
else
-- 如果输入为无效的移动方向,打印错误信息
print("invalid move")
-- 重新进入 room3,保持在同一房间
goto room3
end
end
-- 定义 room4 的标签
::room4::
do
-- 打印当前所在的房间
print("in room 4")
-- 打印玩家获胜消息
print("Congratulations, you won!")
end