|
| """
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, 2, 3: word = 'number'
else: word = 'else'
assert word == 'number'
# Don't forget that you can branch on enumerations, strings and characters. |