An enum is set of predefined constants that are associated with the given name.

enum Direction {
    North South East West

Enum Constants with labels

Enum constants can optionally have a text ‘lexical’ value associated with it. This is often used as a descriptive name for the constant.

Labels are separate from documentation (constants have have documentation in addition to labels), and are considered part of the constant definition.

enum G7Currency {
   CAD("Canadian Dollar")
   JPY("Japanese Yen")
   GBP("British Pound")
   USD("American Dollar")

Combining Enums

ALFA allows enums to be combined to create another using includes. An enum can includes another enum to include the other’s constants. This is demonstrated below.

enum CategoryA {
   A1 A2 A3

enum CategoryB {
   B1 B3 B3

enum CategoryC {
   C1 C2 C3

enum AllCategories includes CategoryA, CategoryB, CategoryC { }

There is no implied relationship between AllCategories and its includes. It will simply contain all constants from its included Categories.

This includes feature is supported in enums to avoid duplication of constants between related enums.