开发者

Create and populate two-dimensional array in Scala

开发者 https://www.devze.com 2022-12-23 15:38 出处:网络
What\'s the recommended way of creating a pre-populated two-dimensional array in Scala? I\'ve got the following code:

What's the recommended way of creating a pre-populated two-dimensional array in Scala? I've got the following code:

val map = for {
    x <- (1 to size).toList
} yield for {
        y <- (1 to size).toList
    开发者_如何学编程} yield (x, y)

How do I make an array instead of list? Replacing .toList with .toArray doesn't compile. And is there a more concise or readable way of doing this than the nested for expressions?


On Scala 2.7, use Array.range:

for {
  x <- Array.range(1, 3)
} yield for {
  y <- Array.range(1, 3)
} yield (x, y)

On Scala 2.8, use Array.tabulate:

Array.tabulate(3,3)((x, y) => (x, y))


Among other ways, you can use use Array.range and 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)))

Or you can use 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 gives you even more options--look through the Array object. (Actually, that's good advice for 2.7, also....)

0

精彩评论

暂无评论...
验证码 换一张
取 消