Menu
CoddyTech

取款方法

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

challenge icon

挑战

简单

你的数字银行业务正在不断发展!账户现在可以接收存款了,但真正的银行还需要允许客户取款。让我们添加一个 :withdraw(amount) 方法,并加入一项重要的安全检查。

与存款不同,取款可能会失败。如果客户尝试取出的钱多于账户余额,银行就不应该允许。你的 withdraw 方法需要在扣除金额前检查余额是否充足。

你将继续处理这两个文件:

  • Account.lua:在现有的 Account 类中添加一个 :withdraw(amount) 方法。如果账户余额充足,就扣除相应金额并返回 true。如果余额不足,就打印 Insufficient funds 并返回 false,且不改变余额。
  • main.lua:创建一个账户,存入一些资金,然后尝试多次取款,观察成功和失败的交易。

你会收到 4 个输入:

  1. 初始存款金额
  2. 第一次取款金额
  3. 第二次取款金额
  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 在线编译器