コードフレームワーク
レシピ: ヘルパー関数
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-3 行目 ヘルパーには export がありません。
- 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 つのアクションの例があります。
テストする
ヘルパーにシナリオは不要です。それを使うアクションのシナリオが、動作を確かめます。

