私は3つのBigDecimal引数を受け取り、何かを計算する再利用可能なメソッド(実際にはもっと複雑です)を持っているとしましょう。計算後、入力パラメータが内部で変更され、次の計算などのために3つすべてが外側に必要です。Scala - 複数の可変パラメータ参照またはオブジェクトへのポインタの参照渡し
ただ1つの引数であれば、戻り値として返すことができます。
Scalaでこのことを行うにはどのような方法がありますか?
object MutableTest extends App {
def mutableMethodWithComplicatedButReusableLogic(a: BigDecimal, b: BigDecimal, c: BigDecimal) = {
a = b + c
c = b * a
b = 0
//All three of changed args should be available outside
}
var a: BigDecimal = 10
var b: BigDecimal = 11
var c: BigDecimal = 12
//1. step
mutableMethodWithComplicatedButReusableLogic(a, b, c)
//2. step a, b, c should change in step 1 and
mutableMethodWithComplicatedButReusableLogic(a*b, b, c -1)
....
}
これはもちろんで終わり:タイムコンパイルエラー:valの値(9,7)再割り当てが= B + C
は、グローバル変数が答えである、またはいくつかの変更可能なヘルパーホルダーオブジェクト?
(A、B、C)= mutableMethodWithComplicatedButReusableLogic(a、b、c)を説明したように、これは動作していない – Levijatanu
http://stackoverflow.com/questions/3348751/scala-multiple-assignment-to-existing-variable – Levijatanu
メソッドの後にvarsをどのように割り当てるべきですか? – Levijatanu