取款方法
本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 21 课,共 70 课。
挑战
简单你的数字银行业务正在不断发展!账户现在可以接收存款了,但真正的银行还需要允许客户取款。让我们添加一个 :withdraw(amount) 方法,并加入一项重要的安全检查。
与存款不同,取款可能会失败。如果客户尝试取出的钱多于账户余额,银行就不应该允许。你的 withdraw 方法需要在扣除金额前检查余额是否充足。
你将继续处理这两个文件:
Account.lua:在现有的 Account 类中添加一个:withdraw(amount)方法。如果账户余额充足,就扣除相应金额并返回true。如果余额不足,就打印Insufficient funds并返回false,且不改变余额。main.lua:创建一个账户,存入一些资金,然后尝试多次取款,观察成功和失败的交易。
你会收到 4 个输入:
- 初始存款金额
- 第一次取款金额
- 第二次取款金额
- 第三次取款金额
在主文件中,创建一个账户,存入初始金额,然后按顺序尝试每次取款。每次尝试取款后,都在新的一行打印当前余额。记住,取款失败时,也会先打印 Insufficient funds,然后才打印余额。
例如,如果输入是 100、30、50 和 40,输出应该是:
70
20
Insufficient funds
20存款后,账户余额为 100。第一次取款 30 成功(余额:70),第二次取款 50 成功(余额:20),但第三次取款 40 失败,因为只剩下 20,所以余额仍为 20。
亲手试试
-- 加载 Account 模块
local Account = require('Account')
-- 读取四个输入
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())
-- 创建一个账户
local account = Account:new()
-- 存入初始金额
account:deposit(initialDeposit)
-- 尝试第一次取款并打印余额
-- TODO:在这里调用 account:withdraw(withdrawal1)
print(account.balance)
-- 尝试第二次取款并打印余额
-- TODO:在这里调用 account:withdraw(withdrawal2)
print(account.balance)
-- 尝试第三次取款并打印余额
-- TODO:在这里调用 account:withdraw(withdrawal3)
print(account.balance)
面向对象编程中的所有课
自己练习: Lua 在线编译器