Scala closure Lexical Scope
<pre><code> class Cell(var x: Int)
  var c = new Cell(1)

  val f1 = () =&gt; c.x /* Create a closure that uses c */

  def foo(e: Cell) = () =&gt; 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 */
</code></pre>

<p>Here the f2() prints 2 , As scala wont do deep copy, why the value is still persisted as 1, it should be 10.. where i am going wrong</p>

<p>2) I had read smomehere, Closure in scala dont deep copy the objects, they just keep reference to the object. what do it exactly mean</p>