Ich möchte mit einem unveränderlichen indizierten multidimensionalen Array arbeiten. Die Struktur, die Sinn macht, ist ein Vector
von Vector
s.Wie erstelle ich mehrdimensionale Vektoren in 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))
Es wäre schön, ein leeres Array zu erstellen, indem Sie die Dimensionen spezifizieren, wie können Sie mit 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))
Allerdings gibt es keine Vector.ofDim
, Funktion, und ich kann kein Äquivalent finden.
Gibt es ein Äquivalent von Array.ofDim
für unveränderliche Objekte? Wenn nicht, warum nicht?
Es ist für ein Programm, das Sudoku-Rätsel löst. Eine partielle Lösung wird als ein nxn-Array von 'Option [Int]' dargestellt. Wenn eine Teillösung _p_ gegeben ist, kann das Programm eine andere Hypothese aufstellen, indem ganze Zahlen in das Array eingefügt werden. Da jedes _p_ mehrere _p'_ s erzeugen kann, möchte ich, dass jede Teillösung unveränderlich ist. Meine Optionen scheinen entweder 1) darzustellen, die Zahlen mit einem privaten 'Array' 2) die Zahlen mit einem' Vector' darzustellen. (2) scheint mehr im funktionalen Stil zu sein, aber das Erstellen von 'Vector's von' Vector's ist peinlich. –
Sie können mehrdimensionale Arrays/Listen mit einzelnen Dimensionen darstellen. – pedrofurla
Bereiten Sie sich auf Spaß vor, wenn Sie versuchen, Zellen in einem mehrdimensionalen Vektor zu aktualisieren. Wahrscheinlich am einfachsten ist eine Hilfsmethode: 'def update [T] (v: Vektor [Vektor [T]]) (c1: Int, c2: Int) (neuVal: T) = v.aktualisiert (c1, v (c1) .updated (c2, newVal)) '. Oder wenn Sie höhere Dimensionen benötigen, kopieren und einfügen von http://stackoverflow.com/a/12612908/770361. –