メインコンテンツへスキップ

コードフレームワーク

レシピ: ヘルパー関数

1 つのルールファイル内で、小さな計算を共有します。

目標

math.min を繰り返す代わりに、上限付きの関数を 1 つ使います。

変更内容

rules/heal.ts
function capped(value: number, limit: number): number {
  return math.min(value, limit);
}

export function heal(self: ElementRef, amount: number): void {
  const hp: number = element.var(self, "hp") as number;
  const max_hp: number = element.var(self, "max_hp") as number;
  if (hp < max_hp) {
    ledger.set(self, "hp", capped(hp + amount, max_hp));
  }
}
  1. 1-3 行目 ヘルパーには export がありません。
  2. 9 行目 同じファイルから、名前で呼び出します。

複数の関数をエクスポートするファイルは、すべてのエクスポートがそのファイルのアクション ID またはレジャー関数 ID として宣言されていない限り、拒否されます。

functions but only the action heal uses it

補助関数は計算しかできません。ledger.set や ledger.add は呼び出せず、書き込む補助関数は拒否されます。

effectful action helpers are not supported until call-target provenance is enforced

補助関数から値を返し、書き込みはアクションの中で行います。「ルールの書き方」のページには、1 つの補助関数を共有する 2 つのアクションの例があります。

テストする

ヘルパーにシナリオは不要です。それを使うアクションのシナリオが、動作を確かめます。

次へ