SCALAで2次元配列を作成して入力します
-
21-09-2019 - |
質問
SCALAで事前に人口の多い2次元アレイを作成する推奨方法は何ですか?次のコードがあります。
val map = for {
x <- (1 to size).toList
} yield for {
y <- (1 to size).toList
} yield (x, y)
リストの代わりに配列を作成するにはどうすればよいですか? .tolistを.toArrayに置き換えることはコンパイルされません。そして、表現のためにネストされたものよりも、これを行うためのより簡潔または読みやすい方法はありますか?
解決
Scala 2.7で使用します Array.range
:
for {
x <- Array.range(1, 3)
} yield for {
y <- Array.range(1, 3)
} yield (x, y)
Scala 2.8で使用します Array.tabulate
:
Array.tabulate(3,3)((x, y) => (x, y))
他のヒント
他の方法では、使用することができます Array.range
と map
:
scala> Array.range(0,3).map(i => Array.range(0,3).map(j => (i,j)))
res0: Array[Array[(Int, Int)]] = Array(Array((0,0), (0,1), (0,2)), Array((1,0), (1,1), (1,2)), Array((2,0), (2,1), (2,2)))
または使用することができます Array.fromFunction
:
scala> Array.fromFunction((i,j) => (i,j))(3,3)
res1: Array[Array[(Int, Int)]] = Array(Array((0,0), (0,1), (0,2)), Array((1,0), (1,1), (1,2)), Array((2,0), (2,1), (2,2)))
Scala 2.8は、さらに多くのオプションを提供します Array
物体。 (実際、それは2.7に対する良いアドバイスです....)
所属していません StackOverflow