35 lines
446 B
Tcl
35 lines
446 B
Tcl
enum Foo(Zero, One(x:Int), Two(x,y:Int))
|
|
|
|
>> Foo.Zero
|
|
= Foo.Zero
|
|
>> Foo.One(123)
|
|
= Foo.One(x=123)
|
|
>> Foo.Two(123, 456)
|
|
= Foo.Two(x=123, y=456)
|
|
|
|
>> Foo.One(10) == Foo.One(10)
|
|
= yes
|
|
|
|
>> Foo.One(10) == Foo.Zero
|
|
= no
|
|
|
|
>> Foo.One(10) == Foo.One(-1)
|
|
= no
|
|
|
|
>> Foo.One(10) < Foo.Two(1, 2)
|
|
= yes
|
|
|
|
>> x := Foo.One(123)
|
|
>> t := {x=>"found"; default="missing"}
|
|
>> t[x]
|
|
= "found"
|
|
>> t[Foo.Zero]
|
|
= "missing"
|
|
|
|
when x is o:One
|
|
>> o.x
|
|
= 123
|
|
else
|
|
fail("Oops")
|
|
|