Consider the following array of String:
var animal:String* = ["ape", "bear", "cat", "dog"];
When you wish to iterate through such an array and don’t
need to know an element’s position, you should
use the “list comprehension” version of
for:
for (creature in animal)
{
System.out.println( creature );
}
If you need to know an element’s position, you might be tempted to do something like this:
for (i in [0..sizeof animal - 1])
{
System.out.println( "Animal {i} - {animal[i]}" );
}
If the array is not empty, the code works. If, however, you have an
empty array, the range expression [0..sizeof animal-1]
will generate the sequence [0, -1], which is almost
certainly not what you want.
Instead, go back to the original list comprehension form, and let
the indexof operator tell you the element’s position:
for (creature in animal)
{
System.out.println("Animal {indexof creature} - {creature}");
}