Scalaで長方形の2次元(または多次元)配列データ構造をどのように表現しますか?
つまり、各行の長さは同じで、コンパイル時に検証されますが、ディメンションは実行時に決定されますか?
Seq[Seq[A]]
は目的のインターフェイスを備えていますが、ユーザーが「不規則な」配列を提供できるため、実行時に障害が発生する可能性があります。
Seq[(A, A, A, A, A, A)]
(および同様の)長さが同じであることを確認しますが、コンパイル時にこの長さを指定することも強制します。
インターフェースの例
これが私が意味するインターフェースの例です(もちろん、内部ディメンションはタプルである必要はありません。リストまたは他のタイプとして指定できます):
// Function that takes a rectangular array
def processArray(arr : RectArray2D[Int]) = {
// do something that assumes all rows of RectArray are the same length
}
// Calling the function (OK)
println(processArray(RectArray2D(
( 0, 1, 2, 3),
(10, 11, 12, 13),
(20, 21, 22, 23)
)))
// Compile-time error
println(processArray(RectArray2D(
( 0, 1, 2, 3),
(10, 11, 12),
(20, 21, 22, 23, 24)
)))