Planet JFX
Register
Advertisement

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}");
}
Advertisement