"""
MakeABranchStatement.cobra
General syntax:
branch WHAT
on VALUE1
STATEMENTS1
on VALUE2
STATEMENTS2
[else
STATEMENTS]
branch WHAT
on VALUE1, STATEMENT1
on VALUE2, STATEMENT2
[else, STATEMENT]
Key rules of the branch statement:
* What's being branched on must be an integer, character, enumeration or string.
* The expressions being matched must be constants (ex: 0, 1, 'x', State.Off, "foo").
When a branch statement isn't feasible, you can possibly:
* Make a class hierarchy and send a message to the object.
* Use an `if-else` ladder (see MakeAnIfElseLadder.cobra)
See also: MakeAnIfElseLadder.cobra, CheckInheritanceAndImplementation.cobra.
"""
class Program
def main is shared
word = ''
# This is the general syntax, below. Notice the keywords `branch` and
# `on` as well as the indentation under each `on` part:
x = 2
branch x
on 1
isEven = false
word = 'one'
on 2
isEven = true
word = 'two'
on 3
isEven = false
word = 'three'
assert isEven
assert word == 'two'
# In addition to `on`, you can put an `else` at the end:
x = 2
branch x
on 1
word = 'one'
on 3
word = 'three'
else
word = 'else'
assert word == 'else'
# If there is only one statement for the `on` or `else` and you want to
# tighten up your code, you can do so by using a colon (,) and putting the
# statement on the same line, like so:
x = 2
branch x
on 1, word = 'one'
on 3, word = 'three'
else, word = 'else'
assert word == 'else'
# You can have more than one value for `on`:
x = 2
branch x
on 1 or 2 or 3, word = 'number'
else, word = 'else'
assert word == 'number'
# Don't forget that you can branch on enumerations, strings and characters. |