Wiki
Version 1 (modified by hopscc, 15 years ago)

--

Enumeration

An enumeration is a distinct type consisting of a set of named constants (enumerator list, enumeration elements).
By default the underlying type of the enumeration elements is int and the first enumerator has the value 0 with the value of each successive enumerator increased by 1.
Enumerators can have initializers to override the default values.

In Cobra an enumeration is declared with the enum keyword followed by the enumeration name.
As this is a type the name must start with an uppercase letter.
Enumeration element names (with optional initialiser values) follow indented on subsequent lines.

Emumerations are referenced by the Enumeration class name dotted with the enumeration element name
or like a constructor call: enumName(enumElementName) .

Multiple elements can be or'd together by specifying multiple elementNames comma separated within the constructor-like call.

Grammar

enum <enumName> [ is <accessModifier>] 
    [ has <Attributes>] 
    [ of <Type> ]
    [ <DocString> ]
    <enumItemName> [ = <value> ]
    ...

    e = <enumName>.<enumItemName>
    e1 = <enumName>(<enumItemName>[, <enumItemName> ...])

Platform

Examples

enum Days 
    """In this enumeration, Sat is 0, Sun is 1, Mon is 2, and so forth.""" 
    Sat
    Sun
    Mon
    Tue
    Wed
    Thu
    Fri

class UseDays
    def main is shared
        today = Days.Fri
        yesterday = Day(Thu)
        weekend = Days(Sat, Sun)

See the effect of System.FlagsAttribute on an enum

enum CarOptions 
    has Flags
    SunRoof = 0x01
    Spoiler = 0x02
    FogLights = 0x04
    TintedWindows = 0x08

class FlagTest
    def main is shared
        options = CarOptions(SunRoof,FogLights)
        print options
        print options to int

/# Output is
    SunRoof, FogLights
    5
   Without 'has Flags' on enum CarOptions
    5
    5
#/    

Notes

It is suggested all enumerations have an element whose value is 0.
If this is in addition to the default starting point of values it should be named None.

See Also

 enum(C# Reference)

Back to LanguageTopics