口座情報
CoddyのLuaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 23/70。
チャレンジ
簡単あなたの Digital Bank はますますプロフェッショナルになっています!次は、印刷時に accounts 自身をきれいに表示できるようにしましょう。__tostring metamethod を追加すると、account がどのように表示されるかを正確に制御できます。account ID と current balance の両方を、すっきりと読みやすい形式で表示できます。
引き続き、既存のファイルを基に構築していきます。
Account.lua:Account class を拡張し、2つの新機能を追加します。:new()constructor を変更し、各 account を識別するidparameter を受け取るようにします- account の情報を整形した string を returns する
__tostringmetamethod を Add します
main.lua:IDs を指定して accounts を作成し、印刷時にどのように表示されるかを示します。
__tostring method は、次の正確な形式の string を returns する必要があります。
Account [ID]: Balance = BALANCEここで、ID は account の ID、BALANCE は current balance です。
4つの inputs が与えられます。
- First account の ID
- First account の deposit amount
- Second account の ID
- Second account の deposit amount
main file では、given IDs で2つの accounts を作成し、それぞれに respective amounts を deposit してから、print() を使って各 account を直接 print します。account object を print すると、__tostring metamethod が自動的に呼び出されます。
たとえば、inputs が 1001、500、1002、750 の場合、出力は次のようになります。
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オンラインコンパイラ