中文编程入门(Lua5.4.6中文版)第六章 Lua 运算符

在网游的战斗世界里,我们同样可以借用各种"技能"来理解Lua语言中的运算符。想象一下这些运算符就像是英雄们施展的不同招式:

算术招式

在网游的经济系统中,假设你操控的英雄A拥有500金币,英雄B则有1000金币。

  • 加法:A与B金币相加(A + B),相当于双方金币合并,结果是1500金币。
  • 减法:A从B那里扣除金币(A - B),那么A将获得额外的500金币,而B剩余500金币。
  • 乘法:A与B通过合作任务共同赚取金币(A * B),团队总共可以获得500,000金币的收益。
  • 除法:B平分给A一部分金币(B / A),每位英雄按照当前比例分配的话,A可得2份金币(因为1000 ÷ 500 = 2)。
  • 取余:若B使用A的一件价值恰好能用完其金币的装备(B % A),由于B的金币多于A,在这个例子中没有剩余零配件的情况;但若假设A有一件价值150金币的装备,那么B购买后会剩下850金币(1000 % 150 = 850)。
  • 乘幂:A提升自身能力等级到平方(A^2),这里我们可以理解为如果每1金币对应一定战斗力,那么当A将其金币翻倍时,战斗力增加至250,000(500^2)。
  • 负号:逆转A的金币增益(-A),这意味着A遭受了一次损失,金币减少500,变为-500金币(在游戏中通常不会出现负金币,此处仅为数学运算概念)。

实例

我们可以通过以下实例来更加透彻的理解算术运算符的应用:

复制代码
-- 定义英雄甲和乙的金币数量
局部 甲的金币 = 500
局部 乙的金币 = 1000

-- 算术招式应用
-- 加法
局部 加法 = 甲的金币 + 乙的金币
输出("加法:", 加法) -- 输出:1500

-- 减法(这里理解为乙给甲金币)
局部 减法 = 乙的金币 - 甲的金币
输出("减法后甲的金币:", 甲的金币 + 减法) -- 输出:1000 (假设甲得到了这500金币)

-- 乘法(团队收益)
局部 乘法 = 甲的金币 * 乙的金币
输出("团队收益金币数:", 乘法) -- 输出:500000

-- 除法(平分金币)
局部 除法 = 乙的金币 / 甲的金币
输出("乙的金币是甲的:", 除法,"倍") -- 输出:2.0

-- 取余
-- 假设有一个价值150金币的装备
局部 除法 = 乙的金币 / 150
局部 取余 = 乙的金币 % 150
输出("购买",除法,"套装备后剩余金币:", 取余) -- 输出:100

-- 乘幂
局部 乘幂 = 甲的金币 ^ 2
输出("能力等级提升后的战斗力:", 乘幂) -- 输出:250000

-- 负号(损失金币)
局部 负号 = -甲的金币
输出("遭受损失后的金币数(仅作演示,游戏中通常不会有负金币):", 负号) -- 输出:-500

显示答案如下:

C:\lua> lua 算术运算.lua

加法: 1500

加法: 1500

减法后甲的金币: 1000

团队收益金币数: 500000

乙的金币是甲的: 2.0 倍

购买几套装备后剩余金币: 100

购买6.0套装备!

能力等级提升后的战斗力: 250000.0

遭受损失后的金币数(仅作演示,游戏中通常不会有负金币):

关系对决

设定英雄A的生命值为250点,英雄B的生命值为200点。

  • 等于:判断A和B生命值是否相同(A == B),结果显示不相等。
  • 不等于:检测A与B生命值是否不同(A ~= B),确实如此。
  • 大于:比较A的生命值是否高于B(A > B),答案是肯定的。
  • 小于:看A的生命值是否低于B(A < B),这不成立。
  • 大于等于:查看A的生命值是否不低于B(A >= B),本例中不满足条件。
  • 小于等于:确认A的生命值是否不高于B(A <= B),结论正确。

逻辑联手

以两位英雄的状态为例,A处于战斗状态(true),B暂时撤退(false)。

  • 逻辑与:如果A和B同时作战(A and B),协同攻击无法触发。

  • 逻辑或:只要A或B中有任意一位在战场(A or B),即可保持攻势。

  • 逻辑非:否定A和B同时作战的情况(not(A and B)),这个否定成立。

    A 与 B
    A 或 B
    非 (A 与 B)

连接与计数魔法

两个英雄口号相连形成更强的战意:

  • .. 连接符:英雄A的口号"英雄"与英雄B的口号"无敌"组合起来,形成合力口号"英雄无敌"。

  • # 长度探测:测量口号"Battle!"(#"Battle!")或队伍名称"Test"(#"Test")的字符数量。

    输出("英雄".."无敌") --- 结果是"英雄无敌"
    输出(#"Battle!") --- 结果是5
    输出(#"Test") --- 结果是4

操作符优先级

就像英雄释放技能的顺序影响着战场局势一样,在Lua中运算符也有执行优先级:

  • 先施展最高阶的强化魔法(指数运算符^)
  • 接着单体强化(逻辑非not、负号-)
  • 再来是群体BUFF叠加(算术运算符*、/、+、-、..)
  • 最后是位置关系调整(关系运算符<、>、<=、>=、~=、==)
  • 组合技生效规则(and、or)

通过实战演练(示例代码运行),我们可以看到不同的计算策略如何影响最终的结果数值,就如同英雄们根据战场形势采取不同的战术配合。

相关推荐
神仙别闹4 分钟前
基于Python实现LSTM对股票走势的预测
开发语言·python·lstm
保持学习ing6 分钟前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
京东云开发者17 分钟前
Java的SPI机制详解
java
超级小忍39 分钟前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
程序无bug43 分钟前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端
小莫分享1 小时前
Java Lombok 入门
java
程序无bug1 小时前
Spring 对于事务上的应用的详细说明
java·后端
食亨技术团队1 小时前
被忽略的 SAAS 生命线:操作日志有多重要
java·后端
苦学编程的谢1 小时前
Maven
java·maven·intellij-idea
考虑考虑1 小时前
Maven 依赖范围(Scope)
java·后端·maven