The indexing expression in MOO extracts a specified element from a list or string:

expression-1[expression-2]

First, `expression-1` is evaluated; it must return a list or a string (the
**sequence**). Then, `expression-2` is evaluated and must return an
integer (the **index**). If either of the expressions returns some other type
of value, `E_TYPE`

is returned. The index must be between 1 and the
length of the sequence, inclusive; if it is not, then `E_RANGE`

is raised.
The value of the indexing expression is the index'th element in the sequence.
Anywhere within `expression-2`, you can use the symbol `$`

as an
expression returning the length of the value of `expression-1`.

"fob"[2] => "o" "fob"[1] => "f" {#12, #23, #34}[$ - 1] => #23

Note that there are no legal indices for the empty string or list, since there are no integers between 1 and 0 (the length of the empty string or list).

Fine point:The`$`

expression actually returns the length of the value of the expression just before the nearest enclosing`[...]`

indexing or subranging brackets. For example:"frob"[{3, 2, 4}[$]] => "b"

Go to the first, previous, next, last section, table of contents.