Quick actions

cmd+k|ctrl+k

Navigation

Languages

Untitled

Snippet info

Language

Nim

Visibility

unlisted

Author

legacy-anonymous

Created

2017-03-16T21:11:40Z

Updated

2017-03-16T21:11:40Z

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 `data=`[T:int|string](m:var A,val:T) =
  when T is int:
    if m.kind != ka:
      m.reset
      m.kind = ka
    m.adata = val
  elif T is string:
    if m.kind != kb: 
      m.reset
      m.kind = kb
    m.bdata = val

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