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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值