Menu
Coddy logo textTech

口座情報

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

challenge icon

チャレンジ

簡単

あなたの Digital Bank はますますプロフェッショナルになっています!次は、印刷時に accounts 自身をきれいに表示できるようにしましょう。__tostring metamethod を追加すると、account がどのように表示されるかを正確に制御できます。account ID と current balance の両方を、すっきりと読みやすい形式で表示できます。

引き続き、既存のファイルを基に構築していきます。

  • Account.lua:Account class を拡張し、2つの新機能を追加します。
    • :new() constructor を変更し、各 account を識別する id parameter を受け取るようにします
    • account の情報を整形した string を returns する __tostring metamethod を Add します
    既存のすべての機能(deposit、withdraw、getBalance methods)はそのまま維持してください。
  • main.lua:IDs を指定して accounts を作成し、印刷時にどのように表示されるかを示します。

__tostring method は、次の正確な形式の string を returns する必要があります。

Account [ID]: Balance = BALANCE

ここで、ID は account の ID、BALANCE は current balance です。

4つの inputs が与えられます。

  1. First account の ID
  2. First account の deposit amount
  3. Second account の ID
  4. Second account の deposit amount

main file では、given IDs で2つの accounts を作成し、それぞれに respective amounts を deposit してから、print() を使って各 account を直接 print します。account object を print すると、__tostring metamethod が自動的に呼び出されます。

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

Account [1001]: Balance = 500
Account [1002]: Balance = 750

これで各 account は固有の identity を持ち、自分自身を明確に説明できるようになりました。よりプロフェッショナルな banking experience です!

自分で試してみよう

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

-- 4つの入力を読み取る
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())

-- ID付きの2つのアカウントを作成する
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- それぞれの金額を入金する
account1:deposit(deposit1)
account2:deposit(deposit2)

-- 各アカウントを出力する(__tostringを使用)
print(account1)
print(account2)

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

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