I thought I had something good last night:
type Position = object
x: int
y: int
type Velocity = object
dx: int
dy: int
dz: int
type Component = Position | Velocity
proc showProps(p: Position) =
echo p.x, ", ", p.y
proc showProps(v: Velocity) =
echo v.dx, ", ", v.dy, ", ", v.dz
let p = Position(x: 9, y: 9)
let v = Velocity(dx: 1, dy: 1, dz: 3)
showProps(p)
showProps(v)
Run
While tedious, it was good.
Then I learned this morning that seq[Component] fails. _sigh_
type Position = object
x: int
y: int
type Velocity = object
dx: int
dy: int
dz: int
type Component = Position | Velocity
proc showProps(p: Position) =
echo p.x, ", ", p.y
proc showProps(v: Velocity) =
echo v.dx, ", ", v.dy, ", ", v.dz
let p = Position(x: 9, y: 9)
let v = Velocity(dx: 1, dy: 1, dz: 3)
var s: seq[Component]
s.add(p)
s.add(v)
echo s
Run