当前位置: 首页 > article >正文

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


http://www.kler.cn/a/386172.html

相关文章:

  • 释放高级功能:Nexusflows Athene-V2-Agent在工具使用和代理用例方面超越 GPT-4o
  • 卡尔曼滤波:从理论到应用的简介
  • STM32芯片EXIT外部中断的配置与原理
  • 【Vue】Vue3.0(二十四)Vue3.0中$refs 、$parent 的概念和使用场景
  • 数据结构--数组
  • Mysql每日一题(行程与用户,困难※)
  • 【DL】YOLO11 OBB目标检测 | 模型训练 | 推理
  • 鸿蒙系统崛起:机遇、挑战与未来展望
  • matlab 质心重合法实现点云配准
  • 2-148 基于matlab的铣削动力学仿真
  • 2.Python解释器
  • 征程 6 工具链性能分析与优化 2|模型性能优化建议
  • 如何电脑连接电视,实现大屏自由!
  • 基于 SSM(Spring + Spring MVC + MyBatis)框架构建电器网上订购系统
  • Unity性能优化-具体操作
  • 从技术创新到商业应用,智象未来(HiDream.ai)创新不止步
  • web 渗透学习指南——初学者防入狱篇
  • java:修复aspectj-maven-plugin插件在java9项目中执行报错:cannot be resolved to a module
  • QML项目实战:自定义Button
  • Spring面试题之事务的传播行为
  • electron 中 ipcRendererEvent 作用
  • 面试总结!
  • spark的学习-03
  • YOLOv8相较于YOLOv5有哪些改进?
  • 滑动窗口最大值
  • 《手写Spring渐进式源码实践》实践笔记(第十七章 数据类型转换)