Saltar al contenido principal

Code frameworks

Receta: una función auxiliar

Comparte un cálculo pequeño dentro de un archivo de reglas.

Objetivo

Usa una sola función con tope en lugar de repetir math.min.

El cambio

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. Líneas 1-3 Una función auxiliar no tiene export.
  2. Línea 9 Llámala por su nombre desde el mismo archivo.

Se rechaza un archivo que exporta más de una función, salvo que cada exportación esté declarada para ese archivo como id de acción o id de función de ledger.

functions but only the action heal uses it

Una función auxiliar solo puede calcular. No puede llamar a ledger.set ni a ledger.add, y una función auxiliar que escribe se rechaza:

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

Devuelve el valor desde la función auxiliar y escríbelo en la acción. La página Escribir reglas muestra dos acciones que comparten una función auxiliar.

Pruébalo

Una función auxiliar no añade escenarios. Los escenarios de la acción que la usa la prueban.

Siguiente