11. メソッド

鉄をいくつ作るか決めるたびに必要な鉱石を計算します。この計算に名前を付けておけば、術式の必要な場所から呼び出せます。自分で作る補助メソッドはMoonstone研究で解放されます。

必要な鉱石数を求める

鉄1には鉱石2が必要です。「鉄の数量を受け取って2倍する」処理をRequiredOreという名前で作ります。

ArcaneScript
public class Program : ArcaneProgram
{
    private int RequiredOre(int iron)
    {
        return iron * 2;
    }

    public void OnStart()
    {
        int needed = RequiredOre(5);
        if (needed == 10)
        {
            Workshop.Log.Write("Ten ore required.");
        }
    }
}

RequiredOreの定義はOnStartの外側、Programの波括弧の内側に書きます。定義を書いただけでは動かず、RequiredOre(5)で呼び出したときに動きます。

値を渡して結果を受け取る

  1. OnStartがRequiredOreを呼び、5を渡します。
  2. RequiredOreのint ironが5を受け取ります。
  3. iron * 2を計算します。
  4. returnが結果の10を呼び出した場所へ返します。
  5. neededに10が入り、次のifへ進みます。

受け取る変数ironを「仮引数」、呼び出すときの5を「実引数」と呼びます。処理が返す値は「戻り値」です。returnは画面への表示ではなく、呼び出した側へ値を渡す命令です。

宣言の読み方

private int RequiredOre(int iron)の最初のintは返す値の型です。privateはProgramの中から使う指定です。ゲームが呼ぶOnStartはpublicにします。

OnStartのvoidは「値を返さない」という意味です。returnで値を返すメソッドはその時点で処理を終えます。値を返さず途中で終える場合はreturn;と書きます。

ironはRequiredOreの中、neededはOnStartの中で使える変数です。このように名前を使える範囲を「スコープ」と呼びます。

練習問題

鉄8を作るための鉱石数をRequiredOreで求めてください。呼び出し、判定、ログの文章をそれぞれどう変えますか。

解答例を表示する解答例を閉じる

RequiredOre(8)で呼び、needed == 16で調べます。ログをSixteen ore required.へ変えます。RequiredOreの定義はそのままで、8 × 2を計算して16を返します。