Есть простейшая игра, которая имеет состояние (state), которое периодически передаётся в оператор scan() и в нём изменяется:
interval(15)
.pipe(
withLatestFrom(keyboardEvents$),
scan(updateGame, initialGame),
tap(paintGame),
takeWhile(isGameOn),
finalize(paintGameOver)
)
.subscribe();
const updateGame = (state: State, [_, key]: [number, string]): State => (
state.enemies = newEnemiesFrom(state),
state.player = newPlayerFrom(state, key),
state = intersect(state),
state = movePlayer(state, key),
state.key = key,
state
);
Полный код с live example
тут.
Мне непонятно почему функция updateGame имеет следующую форму:
(accumulateState, newState) => (
// some actions
)
На мой взгляд, она должна записываться через фигурные скобки так:
(accumulateState, newState) => {
// some actions
}
Почему тело функции помещено не в фигурные скобки, а в круглые?