Rx.Net を使用して Tic-Tac-Toe を実装することにより、関数型リアクティブ プログラミングについてさらに学習しようとしています。私が抱えている問題は、ゲーム ロジックに循環依存関係があるように見えることです。
commands
ストリーム ( 、など) は、ユーザー入力ストリームから生成されますPlaceToken
。ResetGame
ゲームの現在の状態 ( ) は、初期状態から始めて前の状態にboardStates
適用することによって導出されます。commands
var initialBoardState = new BoardState();
var boardStates = commands
.Scan(initialBoardState, (boardState, command) => command.Apply(boardState))
.DistinctUntilChanged();
ただし、commands
ストリームはストリームに依存する必要がありboardStates
ます。これは、現在の状態によって有効なコマンド セットが変化するためです。
たとえばPlaceToken
、ユーザーが空のタイルをクリックしたときにのみコマンドを発行する必要がありますが、空のタイルのセットは現在の状態によって定義されます!
要約すると、互いに依存しているように見える2つのストリームがあります。関数型リアクティブ プログラミングでこれを回避するにはどうすればよいですか?