Menu
Coddy logo textTech

出金メソッド

CoddyのLuaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 21/70。

challenge icon

チャレンジ

簡単

あなたのデジタルバンクは成長しています!Account は deposit を受け取れるようになりましたが、実際の銀行には顧客がお金を引き出せる仕組みも必要です。:withdraw(amount) メソッドを追加しましょう。ただし、重要な安全チェックも行います。

deposit とは異なり、withdraw は失敗することがあります。顧客が所有している金額を超えてお金を引き出そうとした場合、銀行はそれを許可すべきではありません。withdraw メソッドでは、amount を差し引く前に sufficient funds が存在するかどうかを確認する必要があります。

引き続き、次の 2 つのファイルを操作します。

  • Account.lua:既存の Account クラスに :withdraw(amount) メソッドを追加します。account に十分な balance がある場合は、amount を subtract して true を return します。sufficient funds がない場合は、Insufficient funds を print し、balance を変更せずに false を return します。
  • main.lua:account を作成し、funds を用意するために deposit を行ってから、複数回の withdraw を試し、成功する取引と失敗する取引の両方を確認します。

4 つの入力を受け取ります。

  1. 初期 deposit の amount
  2. first withdrawal の amount
  3. second withdrawal の amount
  4. third withdrawal の amount

main ファイルで account を作成し、initial amount を deposit してから、各 withdrawal を順番に試します。各 withdrawal の試行後、現在の balance を新しい行に print します。失敗した withdrawal では、balance を print する前に Insufficient funds も print されることを忘れないでください。

たとえば、入力が 100305040 の場合、出力は次のようになります。

70
20
Insufficient funds
20

account は deposit 後に 100 から始まります。最初の 30 の withdrawal は成功し(balance:70)、2 回目の 50 の withdrawal も成功します(balance:20)。しかし、3 回目の 40 の withdrawal は、残っているのが 20 だけであるため失敗し、balance は 20 のままです。

自分で試してみよう

-- Accountモジュールを読み込む
local Account = require('Account')

-- 4つの入力を読み取る
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)

-- 2回目の引き出しを試み、残高を表示する
-- TODO: ここで account:withdraw(withdrawal2) を呼び出す
print(account.balance)

-- 3回目の引き出しを試み、残高を表示する
-- TODO: ここで account:withdraw(withdrawal3) を呼び出す
print(account.balance)

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Luaオンラインコンパイラ