回顾:钱包运算
本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 30 课,共 70 课。
挑战
简单让我们创建一个 Wallet 类,综合运用你在本章学到的运算符重载技巧。你的钱包会存储金额,并支持两种关键操作:用 + 合并钱包,以及用 < 和 > 比较钱包。
你需要将代码分成两个文件:
Wallet.lua:定义 Wallet 类,并包含一个amount属性,用来表示钱包中的金额。添加一个:new(amount)构造函数,并实现两个元方法:__add:将两个钱包相加,创建一个金额为两者总和的新钱包__lt:比较两个钱包,判断哪个钱包中的钱更少
main.lua:引入 Wallet 模块,创建钱包实例,并演示这两种操作如何协同工作。
你会收到三个输入:
- 第一个钱包的金额
- 第二个钱包的金额
- 第三个钱包的金额
在主文件中,用给定的金额创建三个钱包。然后:
- 将第一个和第二个钱包相加,创建一个合并后的钱包
- 输出合并后钱包的金额
- 使用
<比较合并后的钱包和第三个钱包,并输出结果(true或false) - 使用
>比较合并后的钱包和第三个钱包,并输出结果(true或false)
例如,如果输入是 50、30 和 100,输出应为:
80
true
false第一个钱包(50)和第二个钱包(30)相加,得到金额为 80 的合并后钱包。由于 80 小于 100,第一次比较的结果是 true。由于 80 不大于 100,第二次比较的结果是 false。
亲手试试
local Wallet = require('Wallet')
-- 读取输入
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())
-- TODO: 用给定的金额创建 3 个钱包
-- TODO: 将第 1 个和第 2 个钱包相加,得到一个合并后的钱包
-- TODO: 打印合并后钱包的金额
-- TODO: 使用 < 比较合并后的钱包和第 3 个钱包,并打印结果
-- TODO: 使用 > 比较合并后的钱包和第 3 个钱包,并打印结果
面向对象编程中的所有课
自己练习: Lua 在线编译器