I came across a situation where using a `let` statement on a value object 
created a reference. I then correlated it with [this closed bug 
report](https://forum.nim-lang.org/a43!GG4hjurx). So, is this expected 
behavior?:

Works as normal: 
    
    
    var data: Table[string, string]
    data["key"] = "val"
    let oldData = data
    data.clear()
    echo $oldData  # Echoes {"key": "val"} as expected
    
    
    Run

Unexpected (uses `let`): 
    
    
    proc doSomething(self: var Table[string, string]) =
      let data = self
      self.clear()
      echo $data  # Echoes {} which isn't expected
    
    var data: Table[string, string]
    data["key"] = "val"
    data.doSomething()
    
    
    Run

Works as normal (uses `var`): 
    
    
    proc doSomething(self: var Table[string, string]) =
      var data = self
      self.clear()
      echo $data  # Echoes {"key": "val"} as expected
    
    var data: Table[string, string]
    data["key"] = "val"
    data.doSomething()
    
    
    Run

Reply via email to