我刚开始使用 Scala 并正在尝试一个小玩具程序 - 在本例中是基于文本的井字游戏。我根据我对 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