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
#!ek9 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: Direction, case, enum, opposite, qualified, switch