2015-12-09 61 views
0

感謝您的閱讀!我創建了一個遞歸數獨求解程序(除其他外),稱爲一個函數「步驟」,爲板子上的所有位置添加元素,這些元素在解決方案元素集合中只有一個可能的解決方案。正在更新斯卡拉列表值

sudoku.grid.updated(row, sudoku.grid(row).updated(column, value)) 

當行,列和價值正在從上面的函數返回的元組,而數獨是另一個類和網格是::

val grid: List[List[Int]] 

其中每行藉此通過以下完成一個新的List.When我打印上面的代碼段我正確地得到一個更新列表,例如。

List(6, 0, 0, 4, 1, 0, 0, 9, 3) 

變得

List(6, 0, 0, 4, 1, 8<<<Correctly Updated, 0, 9, 3) 

根據需要,但是當涉及到通過簡單地移除從所述第一代碼段的打印()打印整個網格,這些值不更新。任何幫助將不勝感激!

+2

你是否將更新的網格分配給任何東西?或者只是將它傳遞給打印功能?您可能想要顯示更多的代碼上下文以使問題變得清晰。 – Shadowlands

+0

請顯示您的代碼,以便有人可以複製它。 提供一個可運行的示例,以便人們可以輕鬆地爲您提供幫助。 –

回答

0

scala.List是不可變的(好東西),你不能改變它的內容。 List.updated返回一個新的列表,其中指定的元素髮生更改,這是您打印從代碼返回的值時看到的內容。但原始列表未被修改。

解決此問題的方法是使用scala.collection.mutable.Seq而不是List。這些是可變的集合,您可以在其中調用seq.update(index, elem),這將改變實際基礎集合的內容。

更好的是,找出你需要的只有(或主要)不變的對象。這是功能性的方式。