Menu
CoddyTech

获取余额

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

challenge icon

挑战

简单

你的数字银行已经初具规模!账户可以存款和取款,还会正确检查资金。现在,我们来添加一个 getter 方法来获取余额,然后把所有功能整合起来,模拟一个真实的银行场景。

你将继续完善现有文件:

  • Account.lua:添加一个 :getBalance() 方法,用于返回当前余额。这遵循你之前学过的 getter 模式:以受控的方式访问内部数据,而不是直接访问字段。保留所有现有功能(构造函数、存款和取款方法)。
  • main.lua:创建一个账户,并按顺序执行一系列银行操作,演示存款、取款和余额查询如何在真实场景中配合使用。

你将收到 5 个输入值:

  1. 初始存款金额
  2. 第一次取款金额
  3. 第二次存款金额
  4. 第二次取款金额
  5. 第三次取款金额

在主文件中,创建一个账户,并按顺序执行以下操作:

  1. 存入初始金额,然后使用 :getBalance() 打印余额
  2. 取出第一次取款金额,然后打印余额
  3. 存入第二次存款金额,然后打印余额
  4. 取出第二次取款金额,然后打印余额
  5. 尝试第三次取款,然后打印余额

请记住,取款失败时,会先打印 Insufficient funds,然后再打印余额。

例如,如果输入是 200、50、100、180 和 100,输出应为:

200
150
250
70
Insufficient funds
70

账户初始余额为 200,第一次取款后降至 150,再次存款后升至 250,取出 180 后降至 70。最后一次取款金额为 100,由于资金不足而失败,因此余额仍为 70。

亲手试试

-- 加载 Account 模块
local Account = require('Account')

-- 读取 5 个输入
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())

-- 创建一个账户
local account = Account:new()

-- 存入初始金额,并使用 :getBalance() 打印余额
account:deposit(initialDeposit)
print(account:getBalance())

-- 尝试第一次取款,并打印余额
account:withdraw(withdrawal1)
print(account:getBalance())

-- 存入第二笔金额,并打印余额
account:deposit(deposit2)
print(account:getBalance())

-- 尝试第二次取款,并打印余额
account:withdraw(withdrawal2)
print(account:getBalance())

-- 尝试第三次取款,并打印余额
account:withdraw(withdrawal3)
print(account:getBalance())

面向对象编程中的所有课

自己练习: Lua 在线编译器