2

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

斯卡拉代码:

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

有没有人知道如何重新分配 Array 中的值?

谢谢

4

3 回答 3

9

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
  }
}
于 2013-04-09T16:12:54.370 回答
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

于 2013-04-09T16:07:26.453 回答
1

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

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

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

于 2013-04-10T07:07:05.113 回答