Statements normally end at a newline character, unless there is a backslash at the end of a line.
print 'Statement' print \ 'Statement'
Semicolons can be used on one line to separate statements.
print 'Statement 1.'; print 'Statement 2.'
Compounds are blocks of statements that end with the end
keyword.
if True print 'Compound inside "if"' end
As a special case, single-statement compounds can be created with a colon :
.
if True: print 'No "end" needed here'
The keyword pass
can be used in place of an empty compound.
if True: print "'Tis true."; else: pass
Each compound must be closed with its own end
keyword.
if True if True if True if True end end end end
The assign statement is used to create new variables in the local namespace.
i = 10
Variables are untyped, so any other kind of value can later be assigned to the same variable.
i = "abc"
Arrays are modifiable, so one can change the value of an individual element.
$ array = [1, 2, 3, 4] $ array[1] = 100 $ print array [ 1, 100, 3, 4 ]
Nested arrays can also be assigned into.
$ array[2] = ['a', 'b', 'c'] $ array[2][1] = 'Bee' $ print array [ 1, 100, [ a, Bee, c ], 4 ]
One can assign to dictionaries to add or modify the values of keys.
$ d = {1:2, 'Three':4} $ d[5] = 'Five' $ print d { 1: 2, 5: Five, Three: 4 }
When assigning, the right-hand value is copied to the new variable.
array = [1, 2, 3] origArray = array array[1] = 10 # origArray remains unmodified
Weak assignment ?=
only creates new variables. It never modifies existing ones.
$ print "z exists?", 'z' in locals() z exists? False $ z ?= 3 $ print "z exists?", 'z' in locals() z exists? True $ print 'z =', z z = 3 $ z ?= 10 # this one does nothing $ print 'z =', z z = 3
You can use the const
keyword when assigning to create a read-only variable.
$ const z = 10 $ print 'z has been consted to', z z has been consted to 10
Attempting to assign a new value to a const variable causes an exception.
try z = 10 print 'Allowed to reassign the same value...' z = 5 catch ReadOnlyError print 'Have to delete z before its value can change.' end
Output:
Allowed to reassign the same value... Have to delete z before its value can change.
Variables and functions can be deleted with the del
keyword.
del z
if
, elsif
, and else
are used for conditional branching.
if False print 'a)' elsif False print 'b)' elsif True > False print 'c)' else print 'd)' end
i = 5 while i > 0 print 'Still looping because %i > 0' % i i -= 1 end
Output:
Still looping because 5 > 0 Still looping because 4 > 0 Still looping because 3 > 0 Still looping because 2 > 0 Still looping because 1 > 0
The break
statement is used to break out of loops.
while True print "I won't stay here." break print "Jumped over this." end
Optionally, a number argument can be given to break
to break out of multiple nested loops. Below, the break escapes from two loops.
while True while True print "Uh-oh, now I'm in trouble!" break 2 end end print "Whew"
for
loops iterate over a sequence of array elements, dictionary key-value pairs, or string characters. The loop variable is not deleted afterwards, so it can be checked if the loop was terminated early with break
.
for i in ['planes', 'trains', 'automobiles'] print i end print 'Value of i after the "for" loop is', i
Output:
planes trains automobiles Value of i after the "for" loop is automobiles
When iterating a dictionary, the loop variable is an array containing the key and the value.
a = {'a': 1, 'b': 2} for i in a print i end
Output:
[ a, 1 ] [ b, 2 ]
The continue
statement interrupts the loop and returns flow back to the beginning, with the next element.
for i in ['planes', 'trains', 'automobiles'] if i == 'trains': continue print i, 'are cool!' end
Output:
planes are cool! automobiles are cool!