Chapter 11: Phrases
11.13. Let and temporary variables

A variable, as we have seen, is a name for a value which changes, though always remaining of the same kind. For instance, if "target" is a number variable (or "number that varies") then it may change value from 2 to 4, but not from 2 to "fishknife".

To make complicated decisions, phrases often need to remember values on a temporary basis. We have already seen this for the counter in a "repeat" loop, which exists only inside that loop, and then is no longer needed. Now we define named values which exist only inside the current phrase. For instance:

let outer bull be 25;
let the current appearance be "reddish brown";
let the special room be Marley Wood;

creates temporary variables "outer bull", "current appearance" and "special room". The kinds of these are deduced from the values given, so that, for instance,

say "The outer bull scores [the outer bull in words] when you practice archery in [special room]."

produces

The outer bull scores twenty-five when you practice archery in Marley Wood.

Temporary variables made by "let" are only temporarily in existence while a phrase is being carried out. Their values often change: we could say

let x be 10;
change x to 11;

for instance, or indeed we could "let x be 10" and then "let x be 11". But although we are allowed to change the value, we are not allowed to change the kind of value. The name "x" must always have the same kind of value throughout the phrase to which it belongs, so the following will not be allowed:

let x be 45;
change x to "Norway";

(The difference between "let" and "change" is that "let" can create a new temporary variable, whereas "change" can only alter one which already exists: on the other hand, "change" can change many other things as well, whereas "let" applies only to temporary variables.)


149
** Example  A pushable box
More on using kinds of value inside phrases, this time to simulate something new: a box which, although it cannot be picked up, can be pushed around between three different places on the floor.

The strategy is to make the three possible positions of the box into values.

Box position is a kind of value. The box positions are over by the window, under the shelf and near the bookcase. The current box position is a box position that varies.

To shove the box to (destination - a box position):
    say "With some effort, you shove the old box from [current box position] to [destination].";
    change the current box position to the destination.

So, for instance:

shove the box to over by the window;

might result in the following on screen:

With some effort, you shove the old box from under the shelf to over by the window.

And we can write conditions like so:

if the current box position is over by the window then...

Using a new kind of value is a good way to set up simulations like this one because Inform will ensure that the "current box position" always, no matter what we do, holds one of the three legal box positions. Similarly, a line like

if the current box position is green then ...

will be disallowed because box positions and colours are incomparable.

150
** Example  Tinted wallpaper
A worked example using a new kind of value, "colour", within phrases to talk about tinted wallpaper.


PreviousContentsNext