私はScalaから始めたばかりで、小さなおもちゃのプログラムを試しています。この場合は、テキストベースのTicTacToeです。私はscalaについて知っていることに基づいて作業バージョンを作成しましたが、それはほとんど必須であり、クラスは変更可能であることに気づきました。
私はいくつかの機能的なイディオムを実行して実装しようとしていますが、少なくともゲームの状態を表すクラスを不変にすることができました。ただし、次のように、可変状態と命令ループに依存するゲームループの実行を担当するクラスが残っています。
var board: TicTacToeBoard = new TicTacToeBoard
def start() {
var gameState: GameState = new XMovesNext
outputState(gameState)
while (!gameState.isGameFinished) {
val position: Int = getSelectionFromUser
board = board.updated(position, gameState.nextTurn)
gameState = getGameState(board)
outputState(gameState)
}
}
このループで必須に行っていることをプログラムするためのより慣用的な方法は何でしょうか?
完全なソースコードはこちらhttps://github.com/whaley/TicTacToe-in-Scala/tree/master/src/main/scala/com/jasonwhaley/tictactoe