[nim-dev] passing references

  • From: cmd_not_found <szabla@xxxxxxxxx>
  • To: nim-dev@xxxxxxxxxxxxx
  • Date: Mon, 5 Dec 2016 21:29:51 +0000

I can't understand why the final comparison in the code below returns false. 
XOpts.field is a reference, so passing it somewhere shouldn't change really 
change what addr returns. At least that's my assumption, but I'm obviously 
missing something here. I would be grateful if someone could clue me in.

```nim
type
  XObj* = object
    val*: tuple[a, b: string]

  XObjRef* = ref XObj

  XOpts* = object
    field: XObjRef

proc return_xobjref(opts: XOpts): XObjRef =
  return opts.field

when is_main_module:
  var xobjref: XObjRef
  new(xobjref)
  xobjref.val = ("a", "b")
  var  opts: XOpts
  opts.field = xobjref
  var result = return_xobjref(opts)
  echo "IS IT THE SAME? ", (addr xobjref) == (addr result)

```

Other related posts: