Menu
CoddyTech

回顾:钱包运算

本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 30 课,共 70 课。

challenge icon

挑战

简单

让我们创建一个 Wallet 类,综合运用你在本章学到的运算符重载技巧。你的钱包会存储金额,并支持两种关键操作:用 + 合并钱包,以及用 < 和 > 比较钱包。

你需要将代码分成两个文件:

  • Wallet.lua:定义 Wallet 类,并包含一个 amount 属性,用来表示钱包中的金额。添加一个 :new(amount) 构造函数,并实现两个元方法:
    • __add:将两个钱包相加,创建一个金额为两者总和的新钱包
    • __lt:比较两个钱包,判断哪个钱包中的钱更少
  • main.lua:引入 Wallet 模块,创建钱包实例,并演示这两种操作如何协同工作。

你会收到三个输入:

  1. 第一个钱包的金额
  2. 第二个钱包的金额
  3. 第三个钱包的金额

在主文件中,用给定的金额创建三个钱包。然后:

  1. 将第一个和第二个钱包相加,创建一个合并后的钱包
  2. 输出合并后钱包的金额
  3. 使用 < 比较合并后的钱包和第三个钱包,并输出结果(true 或 false)
  4. 使用 > 比较合并后的钱包和第三个钱包,并输出结果(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 在线编译器