1
ループを使用してオブジェクトをメソッドに渡すと、メソッドが返ってきたときにオブジェクトが変更され、次の繰り返しが中断されるという問題が発生しました。オブジェクトのコピーをメソッドに渡す
私が使用しているコードはかなり凝っているので、私は次のように簡素化されます:それは、高価な音として、
val car: Car = expensiveMethod("greenCar")
for (i <- 1 to 5) {
foo(car)
}
def foo (car: Car) = {
assert(car.name == "greenCar")
car.name = "redCar"
}
expensiveMethod
があるので、私は内部でそれを呼び出すために希望されませんforループ毎回。 車もケースクラスではないので、組み込みのcopy
メソッドを使用することはできません。
のコピーをfoo
に送る簡単な方法はありますか?
カーはスカラーではなく、fooメソッドは有効なScalaメソッドではありません(コンパイルは行いません)。 – Simon
メソッドのシグネチャを修正しました。 – karoma
いいえ、依然としてval(car.name =はcarがメソッドの引数としてvalですが)に代入されています。 – Simon