11.11. Repeat running through

| Chapter 11: Phrases |

| 11.11. Repeat running through

Inform is not used very much for numerical work, so the kind of repeat loop described in the previous section is not much used. Inform's natural domain is really the world of things and rooms, so the following kind of repeat is much more useful.

repeat with (a name not so far used) running through (description of values):

This phrase causes the block of phrases following it to be repeated once for each value matching the description, storing that value in the named variable. (The variable exists only temporarily, within the repetition.) Example: repeat with item running through open containers: ... If there are no containers, or they are all closed, the phrases will not be followed at all. Inform will issue a Problem message if the range of the loop may be infinite: for example, it won't allow: repeat with X running through odd numbers: ... On the other hand it will allow: repeat with T running through times: ... which repeats 1440 times, starting with T at midnight and finishing at 11:59 PM. See the Kinds index for which kinds of value can be repeated through.

As with counting the "number of ..." objects satisfying some property, we can run through a wide variety of possibilities - any description whose range is possible for Inform to search. For example:

> repeat with dinner guest running through the people in the Dining Room:
> ...

> repeat with possession running through things carried:
> ...

> repeat with event running through non-recurring scenes which are happening:
> ...

The following lists the whereabouts of all men in lighted rooms:

> repeat with suspect running through the men who are in a lighted room (called the scene):
> say "[The suspect] is in [the scene].";

Note the way we are allowed to give a name to the vaguely described place "lighted room", so that we can refer to it inside the loop.

176
| Example Strictly Ballroom People who select partners for dance lessons each turn. |
RB

Previous | Contents | Next