Menu
Coddy logo textTech

まとめ - ウォレットの計算

CoddyのLuaジャーニー「Object Oriented Programming」セクションの一部 — レッスン 30/70。

challenge icon

チャレンジ

簡単

この章で学んだ演算子オーバーロードのスキルを統合した Wallet クラスを作成しましょう。このウォレットは金額を保持し、+ によるウォレットの結合と、<code>< および によるウォレットの比較という2つの主要な操作をサポートします。

コードは2つのファイルに分けて構成します:

  • Wallet.lua: 保持している金額を表す amount フィールドを持つ Wallet クラスを定義します。:new(amount) コンストラクタを含め、以下の2つのメタメソッドを実装してください:
    • __add: 2つのウォレットを加算すると、合計金額を保持する新しいウォレットを作成します
    • __lt: ウォレットを比較して、どちらの金額が少ないかを判定します
  • main.lua: Wallet モジュールを読み込み、ウォレットのインスタンスを作成し、両方の操作が連携して動作することを確認します。

3つの入力を受け取ります:

  1. 1つ目のウォレットの金額
  2. 2つ目のウォレットの金額
  3. 3つ目のウォレットの金額

メインファイルで、与えられた金額を使用して3つのウォレットを作成してください。その後、以下の手順を実行します:

  1. 1つ目と2つ目のウォレットを加算して、結合されたウォレットを作成します
  2. 結合されたウォレットの金額を表示します
  3. 結合されたウォレットと3つ目のウォレットを <code>< を使って比較し、結果(true または false)を表示します
  4. 結合されたウォレットと3つ目のウォレットを を使って比較し、結果(true または false)を表示します

例えば、入力が 5030100 の場合、出力は以下のようになります:

80
true
false

1つ目のウォレット(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つ目のウォレットを > を使って比較し、結果を表示する

Object Oriented Programmingのすべてのレッスン