Use fully qualified enum values in a switch to map Direction to its opposite.
← Enumerations · Ref: Q1177
Qualify enum values with the type name in switch cases:
switch dir case Direction.North rtn: Direction.South case Direction.South rtn: Direction.North
Always use Direction.North, never bare North. EK9 requires full qualification to prevent ambiguity.
See Q1170 for enum switch basics. See Q219 for enum features.
Example
defines module qa.enumerations.enumqualifiedvalues defines type Direction North South East West defines function opposite() -> dir as Direction <- rtn as Direction: Direction.North switch dir case Direction.North rtn: Direction.South case Direction.South rtn: Direction.North case Direction.East rtn: Direction.West case Direction.West rtn: Direction.East default rtn: Direction.North defines program EnumQualifiedValuesDemo() stdout <- Stdout() directions <- [Direction.North, Direction.South, Direction.East, Direction.West] for dir in directions result <- opposite(dir) stdout.println(`${dir} -> ${result}`)
Common mistakes
E50001 — EK9 enums must be qualified with the type name. Use Direction.North, not just North.
Incorrect:
case North
Correct:
case Direction.North
Other ways to ask this
- Write code to switch on an enum and produce the reverse direction
- I need a function that returns the opposite of a compass Direction enum value
- In Java I'd use switch(dir) { case NORTH: ... }. Write the EK9 qualified enum switch
- Given North/South/East/West, create a function that maps each to its opposite using switch
Coming from another language?
Java: case NORTH: (unqualified in switch). Kotlin: Direction.NORTH (qualified). Python: Direction.NORTH. EK9: Direction.North (always qualified).
Keywords: enum, qualified, switch, Direction, opposite, case