我想更改多维数组中的所有值,但我收到“重新分配给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
)});
是否有人知道如何重新分配数组中的值?
由于
答案 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甚至是功能性的,但它确实有效。