3

Rx.Net を使用して Tic-Tac-Toe を実装することにより、関数型リアクティブ プログラミングについてさらに学習しようとしています。私が抱えている問題は、ゲーム ロジックに循環依存関係があるように見えることです。

commandsストリーム ( 、など) は、ユーザー入力ストリームから生成されますPlaceTokenResetGame

ゲームの現在の状態 ( ) は、初期状態から始めて前の状態にboardStates適用することによって導出されます。commands

var initialBoardState = new BoardState();

var boardStates = commands
    .Scan(initialBoardState, (boardState, command) => command.Apply(boardState))
    .DistinctUntilChanged();

ただし、commandsストリームはストリームに依存する必要がありboardStatesます。これは、現在の状態によって有効なコマンド セットが変化するためです。

たとえばPlaceToken、ユーザーが空のタイルをクリックしたときにのみコマンドを発行する必要がありますが、空のタイルのセットは現在の状態によって定義されます!

要約すると、互いに依存しているように見える2つのストリームがあります。関数型リアクティブ プログラミングでこれを回避するにはどうすればよいですか?

4

2 に答える 2