為什么在support2048.js中的canMoveLeft()函數中判斷了一下board[i][j]是否等于0后,在main2048.js中的moveLeft函數中又還要判斷一次???這不是多余的嗎
2 回答
舉報
0/150
提交
取消
為什么在support2048.js中的canMoveLeft()函數中判斷了一下board[i][j]是否等于0后,在main2048.js中的moveLeft函數中又還要判斷一次???這不是多余的嗎
2014-07-17
舉報
2014-07-17
恩 謝謝了
2014-07-17
canMoveLeft是對當前board整體給出一個判斷,是否需要具體的作移動操作。在moveLeft中,是針對每一個格子是否需要移動作判斷。 moveLeft不判斷board[i][j]是否為0,是效率考慮。否則相當于每次16個格子都要移動,不優。 其實moveLeft很研究,canMoveLeft確實可以不判斷。但是最初設計接口moveLeft返回bool,所以就加了這段邏輯。 確實有優化空間!謝謝提醒!