function multipleparams(threedimensionalarray : Array<Array<Array<Int>>>, stringval : String, boolval : Bool) {} function optionalargument( ?i : Int ) : Int {return 0;} // opcjonalny parametr typu int, zwraca int function functionasparameter( f : Void -> Void ) {f();} // wywołanie funkcji bez parametrów function anotherfunctionparm( f : Int -> Int ) {var result = f(1);} // wywołanie funkcji zwracającej int, z parametrem typu int function icoulddoanything(d : Dynamic) : Dynamic {return d;} // funkcja pobierająca i zwracająca parametr dowolnego typu
Typy wyliczeniowe są kluczową cechą języka; mogą być rekursywne i zawierać parametry . Są zbliżone do typów algebraicznych w językach jak ML lub Haskell. Typy wyliczeniowe w HaxeHaxe nie są indeksowanymi wartościami o "magicznych numerach", jak ma to miejsce w większości języków, ale są bardziej abstrakcyjne: nie mają przypisanej żadnej wartości, ale mogą być przypisane do zmiennych, jak w poniższym przykładzie:
enum Color { red; green; blue; rgb: ( r : Int, g : Int, b : Int );
class Colors { static function toInt( c : Color ) : Int { return switch( c ) { case red: 0xFF000; case green: 0x00FF00; case blue: 0x0000FF; case rgb(r,g,b): (r << 16) | (g << 8) | b;
static function validCalls() { var redint = toInt(red); var rgbint = toInt(rgb(100,100,100));