获取余额
本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 22 课,共 70 课。
挑战
简单你的数字银行已经初具规模!账户可以存款和取款,还会正确检查资金。现在,我们来添加一个 getter 方法来获取余额,然后把所有功能整合起来,模拟一个真实的银行场景。
你将继续完善现有文件:
Account.lua:添加一个:getBalance()方法,用于返回当前余额。这遵循你之前学过的 getter 模式:以受控的方式访问内部数据,而不是直接访问字段。保留所有现有功能(构造函数、存款和取款方法)。main.lua:创建一个账户,并按顺序执行一系列银行操作,演示存款、取款和余额查询如何在真实场景中配合使用。
你将收到 5 个输入值:
- 初始存款金额
- 第一次取款金额
- 第二次存款金额
- 第二次取款金额
- 第三次取款金额
在主文件中,创建一个账户,并按顺序执行以下操作:
- 存入初始金额,然后使用
:getBalance()打印余额 - 取出第一次取款金额,然后打印余额
- 存入第二次存款金额,然后打印余额
- 取出第二次取款金额,然后打印余额
- 尝试第三次取款,然后打印余额
请记住,取款失败时,会先打印 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 在线编译器