class Cell(var x: Int)
var c = new Cell(1)
val f1 =() => c.x /* Create a closure that uses c */
def foo(e: Cell) =() => e.x /* foo is a closure generator with its own scope */
// f2 wont do any reference/deep copy
val f2 = foo(c) /* Create another closure that uses c */
val d = c /* Alias c as d */
c = new Cell(10) /* Let c point to a new object */
d.x = d.x + 1 /* Increase d.x (i.e., the former c.x) */
// now c.x refers to 10
println(f1()) /* Prints 10 */
println(f2()) /* Prints 2 */
Здесь f2() печатает 2, Как обыкновение делать Скала глубокой копии, поэтому значение по-прежнему сохранялось как 1, это должно быть 10 .. где я буду неправильноScala закрытие лексическую область
2) Я прочитал smomehere, Закрытие в scala не глубоко копирует объекты, они просто продолжают ссылаться на объект. что это точно означает