mappings / each

Edit on Github


each() - iterate over the (key, value) pairs in a mapping


mixed *each( mapping m, int reset );


The  (key,  value)  pairs  in  a mapping may be iterated over using the
each() efun.  each() returns the (key, value) pairs in the  same  order
as  keys()  and values() do.  each() returns a null vector when the end
of the mapping is reached.  The next access to each() (after  receiving
the null vector) will start over at the beginning of the map.  The cur‐
rent position in the map always resets to the beginning when a  differ‐
ent  object  accesses  the  map  via  each().  Given the singlethreaded
nature of MudOS, this doesn't present a problem (and in fact makes sure
that  an  object  can't  leave  the  current  position in an in-between
state).  If the optional second argument is given as 1,  then  each()'s
position in mapping 'm' is reset to the beginning.

For example:

mixed *pair;

while ((pair = each(x)) != ({})) {
write("key   = " + pair[0] + "\n");
write("value = " + pair[1] + "\n");


keys(3), values(3)