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)で呼び出したときに動きます。
値を渡して結果を受け取る
- OnStartがRequiredOreを呼び、5を渡します。
- RequiredOreの
int ironが5を受け取ります。 iron * 2を計算します。- returnが結果の10を呼び出した場所へ返します。
- 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を返します。
