中文编程入门(Lua5.4.6中文版)第五章 Lua 函数

在网游般的Lua编程世界中,函数就如同英雄们施展的技能,它们是实现各种战术和策略的核心手段。无论是执行特定任务,还是计算并返回关键数据,都离不开这些强大而灵活的"法术"。

!函数定义示意图(image_url)

Lua中的英雄------函数,其诞生(定义)过程犹如神秘的符文仪式:

复制代码
-- 可选区域:选择你的法术施展范围(全局或局部)
局部 函数 英雄名(召唤师技能1, 召唤师技能2, ..., 最后一个召唤师技能)
   -- 这里是法术施展的具体步骤(函数体)
   如果 条件成立 即
      结果 = 破敌之策1
   否则
      结果 = 破敌之策2
   结束
   
   -- 法术施展完毕,释放能量(返回结果)
   返回 结果1[, 结果2[, ...]]
结束

让我们见识一下"比较王者"技能的实战应用:

复制代码
-- 定义一个技能:找出两个数值的最大值
函数 比较能力值(技能1, 技能2)
   局部 最大能力值 = 技能1 > 技能2 与 技能1 或 技能2
   -- 释放最大能力值
   返回 最大能力值
结束

-- 调用技能进行实战检验
输出("对决结果显示,最大能力值为 ", 比较能力值(10, 4))
输出("另一场对决中,最大能力值为 ", 比较能力值(5, 6))

-- 输出:
-- 对决结果显示,最大能力值为  10
-- 另一场对决中,最大能力值为  6
```

Lua还允许你将技能作为参数传递给其他英雄(函数),例如下面这段代码就像一位辅助英雄给队友提供了强大的增益效果:

复制代码
-- 定义一个杨琵琶大招,用于显示战斗信息
杨琵琶大招 = 函数(技能合并)
    输出("战场播报:", "##", 技能合并, "##")
结束

-- 定义一个组合技,它接受数值和一个展示结果的技能作为参数
函数 组合技(技能1, 技能2, 显示伤害值)
    杀伤力 = 技能1 + 技能2
    -- 使用传入的技能来展示战斗结果
    显示伤害值(杀伤力)
结束

-- 调用技能
杨琵琶大招(100) -- 直接使用杨琵琶大招
组合技(150, 150, 杨琵琶大招) -- 将杨琵琶大招传递给组合技

-- 输出:
-- 战场播报: ## 100 ## 直接使用杨琵琶大招已经伤害100。
-- 战场播报: ## 300 ## 150 + 150 = 300

```

此外,Lua的"多目标打击"功能允许单个函数一次性返回多个结果,比如我们的"搜索大师"技能可以同时定位到目标的起始和结束位置:

复制代码
函数 搜索敌人踪迹(文字, 坐标)
   -- 在文本中搜索敌人踪迹,并获取索引坐标
   局部 开始,结尾 = 字.查找(文字, 坐标)
   返回 开始,结尾
结束

开始,结尾 = 搜索敌人踪迹("敌方座标位于东区", "坐标")
输出(开始,结尾)     -- 输出:5    8

-- 此处表示在指定文本中找到了目标字符串的位置

```

最后,Lua英雄也能灵活应对各种复杂情况,通过"可变参数"技能接收不固定数量的能量输入(参数):

复制代码
函数 收集所有能量值(...)
--合计能量值 收集所有能量值
能量合计 = 0
局部 能量 = {...}
因为 i, 能量值 属于 序配(能量) 做
    能量合计 = 能量合计 + 能量值
结束

输出("总计收集了 " .. #能量 .. " 股能量")
返回 能量合计 / #能量
结束

输出("平均能量强度为", 收集所有能量值(10, 5, 3, 4, 5, 6))

-- 输出:
-- 总计收集了 6 股能量
-- 平均能量强度为 5.5

以上就是Lua中函数这一"英雄"的多样玩法和实用技巧,让编程之旅如同在王者战场上挥洒智慧与激情!

相关推荐
isyangli_blog2 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008112 小时前
FastAPI APIRouter
开发语言·python
Benszen2 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆2 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木2 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充3 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~3 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6163 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
春生野草3 小时前
反射、Tomcat执行
java·开发语言
雪的季节4 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt