我剛剛開始與斯卡拉,我正在嘗試一個小玩具程序 - 在這種情況下,基於文本的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
您可以從Vasil Remeniuk的[帶虛幻類型的Tic-Tac-Toe API]獲取靈感(http://vasilrem.com/blog/software-development/tic-tac-toe-api-with-phantom-types /)文章。 – 4e6
@ 4e6 + 1'ed,我將繼續堅持以後的鏈接。在那篇文章(traits,以及scala如何處理類型參數)中討論過的scala的功能現在我不太熟悉。準備好之後,我可以從頭開始使用這篇文章作爲跳板。謝謝! – whaley
堆棧溢出的一個問題是你不能接受多個答案。感謝大家的幫助! – whaley