7

Scalaで事前入力された2次元配列を作成する推奨方法は何ですか? 私は次のコードを持っています:

val map = for {
    x <- (1 to size).toList
} yield for {
        y <- (1 to size).toList
    } yield (x, y)

リストの代わりに配列を作成するにはどうすればよいですか? .toList を .toArray に置き換えてもコンパイルされません。そして、ネストされた for 式よりもこれを行うためのより簡潔で読みやすい方法はありますか?

4

2 に答える 2

9

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))
于 2010-03-23T02:22:51.323 に答える
2

他の方法の中でも、 useArray.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 に対する良いアドバイスでもあります....)

于 2010-03-22T23:02:31.370 に答える