如何修改数组中的每个值?

时间:2013-04-09 15:49:03

标签: scala

我想更改多维数组中的所有值,但我收到“重新分配给val”错误。

Scala代码:

var cal = Array.ofDim[Double](300, 10000000);
cal.foreach(x => {
    x.foreach({o => o = 5.1} //here it'll be more complicated code 
)});

是否有人知道如何重新分配数组中的值?

由于

3 个答案:

答案 0 :(得分:9)

mutable sequences上的就地修改批量操作为transform

for (y <- 0 until cal.length) {
  cal(y).transform(x => 5.1)
}

你也可以这样做:

for (y <- 0 until cal.length) {
  val row = cal(y)
  for (x <- 0 until row.length) {
    row(x) = 5.1
  }
}

答案 1 :(得分:1)

我不确定这是否是最佳方式,但它有效:

  val cal = Array.ofDim[Double](300, 10000000) 
  (0 until cal.length).foreach(rowIndex => {
     val row = cal(rowIndex)
     (0 until row.length).foreach(colIndex => {
        row(colIndex) = 5.1 //here it'll be more complicated code
     })
  })

您遇到错误的原因是您正在尝试为o中的不可变函数参数o => o = 5.1分配值。

答案 2 :(得分:1)

由于您使用var,您可以简单地

var cal = Array.ofDim[Double](300, 10000000);
cal = cal.map{
  a=>a.map{
    o=> 1.5 \\complex calculations 
  }
}

NB:这不是惯用的scala甚至是功能性的,但它确实有效。