Quick actions

cmd+k|ctrl+k

Navigation

Languages

Untitled

Snippet info

Language

Nim

Visibility

unlisted

Author

legacy-anonymous

Created

2017-03-16T22:08:34Z

Updated

2017-03-16T22:08:34Z

{.experimental.}

type K = enum
  ka,kb

type A = object
  case kind: K
  of ka: innerAdata:int
  of kb: innerBdata:string

proc a():A = A(kind:ka)

var an = a()

proc `.=`[T](m:var A, field:string, val:T) = 
  echo "Dot operator assignment overload called!", field
  if field == "adata":
    if m.kind != ka:
      m.reset
      m.kind = ka
    m.innerAdata = val
  #elif bdata ...

proc `.`(m:var A, field:string):int = 
  echo "Dot operator access overload called!", field
  if field == "adata":
    result = m.innerAdata

an.adata = 5
echo an.kind, an.adata
an.adata = 6
echo an.kind, an.adata
#an.bdata = "hello"
#echo an.kind, an.bdata
INFO