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
에 car
사본을 보낼 수있는 간단한 방법이 있습니까?
자동차 자동차는 자바가 아니며 foo 메소드는 유효한 스칼라 메소드가 아닙니다 (컴파일하지 않습니다). 왜냐하면 여러분이 val에 대한 재 할당을하고 있기 때문입니다 ... – Simon
죄송합니다. 메소드 서명을 수정했습니다. 이제는 괜찮을 것입니다. – karoma
아니요, 여전히 val에 대한 재 할당이 있습니다 (car가 메소드의 인수로 val이지만 car.name =). – Simon