Testing conditions
How can we execute a different branch of code depending on a condition? For instance, in our game, we will have to test whether the input number is bigger or smaller than the number to be guessed. Red gives us different ways to do this.
if
Here is how if
works:
- When a condition is true, then evaluate the block of code that follows
- If the condition is false, do nothing; more precisely, the
none
value is returned:
;-- see Chapter04/conditions.red:
account: -250
if account < 0 [print "Your account is overdrawn."] ;== Your account is overdrawn.
if now/time < 12:00 [print "before noon"] ;== before noon, if e.g. 10:53
The condition (here, account < 0
or now/time < 12:00
) need not be enclosed in ( )
, but the code following it must be in a block []
.
Logical operations such as and
, or
, and not
can be used to create composite conditions. For instance, here we use not
to test whether a file is present, using the exists?
function:
if not exists? %missing.txt [print...