<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.51
from ProgrammersManual.texinfo on 4 March 1997 -->
<TITLE>LambdaMOO Programmer's Manual - Extracting</TITLE>
</HEAD>
<BODY>
Go to the <A HREF="ProgrammersManual_1.html">first</A>, <A HREF="ProgrammersManual_17.html">previous</A>, <A HREF="ProgrammersManual_19.html">next</A>, <A HREF="ProgrammersManual_77.html">last</A> section, <A HREF="ProgrammersManual_toc.html">table of contents</A>.
<P><HR><P>
<H4><A NAME="SEC18" HREF="ProgrammersManual_toc.html#TOC18">Extracting an Element from a List or String</A></H4>
<P>
The indexing expression in MOO extracts a specified element from a list or
string:
</P>
<PRE>
<VAR>expression-1</VAR>[<VAR>expression-2</VAR>]
</PRE>
<P>
First, <VAR>expression-1</VAR> is evaluated; it must return a list or a string (the
<STRONG>sequence</STRONG>). Then, <VAR>expression-2</VAR> is evaluated and must return an
integer (the <STRONG>index</STRONG>). If either of the expressions returns some other type
of value, <CODE>E_TYPE</CODE> is returned. The index must be between 1 and the
length of the sequence, inclusive; if it is not, then <CODE>E_RANGE</CODE> is raised.
The value of the indexing expression is the index'th element in the sequence.
Anywhere within <VAR>expression-2</VAR>, you can use the symbol <CODE>$</CODE> as an
expression returning the length of the value of <VAR>expression-1</VAR>.
</P>
<PRE>
"fob"[2] => "o"
"fob"[1] => "f"
{#12, #23, #34}[$ - 1] => #23
</PRE>
<P>
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).
</P>
<BLOCKQUOTE>
<P>
<EM>Fine point:</EM> The <CODE>$</CODE> expression actually returns the length of the
value of the expression just before the nearest enclosing <CODE>[...]</CODE>
indexing or subranging brackets. For example:
<PRE>
"frob"[{3, 2, 4}[$]] => "b"
</PRE>
</BLOCKQUOTE>
<P><HR><P>
Go to the <A HREF="ProgrammersManual_1.html">first</A>, <A HREF="ProgrammersManual_17.html">previous</A>, <A HREF="ProgrammersManual_19.html">next</A>, <A HREF="ProgrammersManual_77.html">last</A> section, <A HREF="ProgrammersManual_toc.html">table of contents</A>.
</BODY>
</HTML>