Iterating with For Loops
Basic Usage
Haxe does not use traditional C-Style for loops, instead, for loops follow the following structure:
for (item in iterable) {
Engine.log(item)
}The iterable value which comes in one of three forms:
Iterating Through Arrays
Arrays are likely to be the most common iterator
var list = ["apple", "pear", "banana"];
for (item in list) {
Engine.log(item); // The item variable is accessible in this block
}
// apple
// pear
// bananaIterating Through Number Ranges
In some cases you might just need to run through a range of numbers but the data you're operating on isn't an iterable, or maybe you just want to generate a numbered sequence:
This is a basic for loop using iterators:
for (i in 0...10) {
Engine.log(i);
} // Prints 0 to 9If you wanted to iterate through all characters in a string:
var greeting = "HeyGuys";
for (charIndex in 0...(greeting.length)) {
Engine.log(string.charAt(charIndex));
} // Prints all the characters line by line
// H
// e
// y
// G
// u
// y
// sUsing Engine.forEach and Engine.forCount
When developing in fraytools you may notice that you don't get proper completion when using regular for loops as of the time of writing.
So for iterating through items with decent completion you can use Engine.forEach and Engine.forCount
I'd also recommend taking a look at Functions since that's very relevant here.
Engine.forEach
General Structure is
Engine.forEach(numberOfItems, function (item,index) {
// Function Body here accessing item or index
}, []);var list = ["apple", "pear", "banana"];
Engine.forEach(list, function (item:String , idx:Int) {
Engine.log(item); // The item variable is accessible in this block
Engine.log(idx); // Could also access the array index
},[]);
// apple
// 0
// pear
// 1
// banana
// 2Engine.forCount
The general structure is
Engine.forCount(numberOfItems, function (index) {
// Function Body here
}, []);Engine.forCount(10, function (i:Int) {
Engine.log(i);
return true;
}, []); // Prints 0 to 9And Similarly for a string:
var greeting = "HeyGuys";
Engine.forCount(greeting.length, function (i:Int) {
Engine.log(string.charAt(charIndex));
}, []);
// Prints all the characters line by line
// H
// e
// y
// G
// u
// y
// s