まとめ - ウォレットの計算
CoddyのLuaジャーニー「Object Oriented Programming」セクションの一部 — レッスン 30/70。
チャレンジ
簡単この章で学んだ演算子オーバーロードのスキルを統合した Wallet クラスを作成しましょう。このウォレットは金額を保持し、+ によるウォレットの結合と、<code>< および によるウォレットの比較という2つの主要な操作をサポートします。
コードは2つのファイルに分けて構成します:
Wallet.lua: 保持している金額を表すamountフィールドを持つ Wallet クラスを定義します。:new(amount)コンストラクタを含め、以下の2つのメタメソッドを実装してください:__add: 2つのウォレットを加算すると、合計金額を保持する新しいウォレットを作成します__lt: ウォレットを比較して、どちらの金額が少ないかを判定します
main.lua: Wallet モジュールを読み込み、ウォレットのインスタンスを作成し、両方の操作が連携して動作することを確認します。
3つの入力を受け取ります:
- 1つ目のウォレットの金額
- 2つ目のウォレットの金額
- 3つ目のウォレットの金額
メインファイルで、与えられた金額を使用して3つのウォレットを作成してください。その後、以下の手順を実行します:
- 1つ目と2つ目のウォレットを加算して、結合されたウォレットを作成します
- 結合されたウォレットの金額を表示します
- 結合されたウォレットと3つ目のウォレットを <code>< を使って比較し、結果(
trueまたはfalse)を表示します - 結合されたウォレットと3つ目のウォレットを
を使って比較し、結果(trueまたはfalse)を表示します
例えば、入力が 50、30、100 の場合、出力は以下のようになります:
80
true
false1つ目のウォレット(50)と2つ目のウォレット(30)を足すと、80の結合ウォレットが作成されます。80は100より小さいため、最初の比較は true になります。80は100より大きくないため、2番目の比較は false になります。
自分で試してみよう
local Wallet = require('Wallet')
-- 入力を読み込む
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())
-- TODO: 指定された金額で3つのウォレットを作成する
-- TODO: 1つ目と2つ目のウォレットを合算して、結合されたウォレットを作成する
-- TODO: 結合されたウォレットの金額を表示する
-- TODO: 結合されたウォレットと3つ目のウォレットを < を使って比較し、結果を表示する
-- TODO: 結合されたウォレットと3つ目のウォレットを > を使って比較し、結果を表示する