我想使用一個不可變的索引多維數組。有意義的結構是Vector
的Vector
s。如何在Scala中創建多維向量?
scala> val v = Vector[Vector[Int]](Vector[Int](1,2,3), Vector[Int](4,5,6), Vector[Int](7,8,9))
v: scala.collection.immutable.Vector[Vector[Int]] = Vector(Vector(1, 2, 3), Vector(4, 5, 6), Vector(7, 8, 9))
這將是很好創建一個空數組只是通過指定尺寸,就像你可以與Array.ofDim
。
scala> a = Array.ofDim[Int](3,3)
a: Array[Array[Int]] = Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0))
然而,沒有Vector.ofDim
,功能,我無法找到一個等效。
是否有相當於Array.ofDim
的不可變對象?如果不是,爲什麼不呢?
這是一個解決Sudoku難題的程序。部分解決方案被表示爲一個nxn的'Option [Int]'數組。給定部分解決方案_p_,程序可以通過將整數放入數組來假設另一個_p'_。由於每個_p_可能會生成多個_p'_ s,我希望每個部分解決方案都是不可變的。我的選項似乎是1)代表具有私有「數組」的數字2)用「Vector」代表數字。 (2)在功能風格上似乎更多,但是創建'Vector's的'Vector's很尷尬。 –
您可以使用單個維度來表示多維數組/列表。 – pedrofurla
準備嘗試更新多維向量中的單元格有些樂趣。可能最簡單的是有一個實用方法:'def update [T](v:Vector [Vector [T]])(c1:Int,c2:Int)(newVal:T)= v.updated(c1,v(c1 ).updated(c2,newVal))'。或者,如果您需要從http://stackoverflow.com/a/12612908/770361複製和粘貼更高維度。 –