Quick actions

cmd+k|ctrl+k

Navigation

Languages

Untitled

Snippet info

Language

Nim

Visibility

unlisted

Author

legacy-anonymous

Created

2017-03-16T21:34:33Z

Updated

2017-03-16T21:34:33Z

type K = enum
  ka,kb

type A = object
  case kind: K
  of ka: adata:int
  of kb: bdata:string

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

var an = a()

proc `adata=`[T](m:var A, val:T) = 
  if m.kind != ka:
    m.reset
    m.kind = ka
  m.adata = val

proc `bdata=`[T](m:var A, val:T) = 
  if m.kind != kb:
    m.reset
    m.kind = kb
  m.bdata = val

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