多次元配列のすべての値を変更したいのですが、「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 の値を再割り当てする方法を知っている人はいますか?
ありがとう
多次元配列のすべての値を変更したいのですが、「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 の値を再割り当てする方法を知っている人はいますか?
ありがとう
変更可能なシーケンス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
}
}
これが最善の方法かどうかはわかりませんが、うまくいきます:
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
です。
あなたの使用以来、var
あなたは簡単にできる
var cal = Array.ofDim[Double](300, 10000000);
cal = cal.map{
a=>a.map{
o=> 1.5 \\complex calculations
}
}
注意:これは慣用的なスカラでも機能的でもありませんが、機能します。