Scala 如何修改数组中的每个值?
我想更改多维数组中的所有值,但收到“重新分配到val”错误 Scala代码:Scala 如何修改数组中的每个值?,scala,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 )}); 有人知道如何重新分配数组中的值吗 谢谢我不确定这是否是最好的方法,但它确实有效: val cal = Array.ofDim[D
var cal = Array.ofDim[Double](300, 10000000);
cal.foreach(x => {
x.foreach({o => o = 5.1} //here it'll be more complicated code
)});
有人知道如何重新分配数组中的值吗
谢谢我不确定这是否是最好的方法,但它确实有效:
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=5.1
中为不可变函数参数o
分配一个值,此时有一个就地修改批量操作处于启用状态
(y 5.1)的
}
您还可以执行以下操作:
for (y <- 0 until cal.length) {
val row = cal(y)
for (x <- 0 until row.length) {
row(x) = 5.1
}
}
for(y由于您使用了var
您可以
var cal = Array.ofDim[Double](300, 10000000);
cal = cal.map{
a=>a.map{
o=> 1.5 \\complex calculations
}
}
NB:这不是惯用的scala,甚至不是函数式的,但它可以工作。其中n
是cal
的大小,m
是每行的大小,逗号是乘法?当然。谢谢,如果我需要使用transform数组的索引,我应该使用zipWithIndex.transform吗?不,这将创建一个新的数组元素对及其索引-数组[(T,Int)]
。更糟糕的是,该中间数组随后将被更新。相反,您应该使用嵌套for循环来覆盖范围。
var cal = Array.ofDim[Double](300, 10000000);
cal = cal.map{
a=>a.map{
o=> 1.5 \\complex calculations
}
}