Необязательные аргументы

Некоторые параметры функций могут быть сделаны необязательными, с помощью знака вопроса перед именем аргумента :

class Test {
    static function foo( x : Int, ?y : Int ) {
        trace(x+","+y);
    }
    static function main() {
        foo(1,2); // trace 1,2
        foo(3); // trace 3,null
    }
}
</div>

Хотя рекомендуется ставить необязательные параметры в конец списка аргументов, вы можете использовать их в начале или в середине.

К тому же, необязательные параметры являются также независимыми в haXe. Это значит что они могут использоваться без наличия предыдущего :

    function foo( ?x : A, ?y : B ) {
    }

    foo(new A()); // равнозначно foo(new A(),null);
    foo(new B()); // равнозначно foo(null, new B());
    foo(); // равнозначно foo(null,null);
    foo(new C()); // ошибка времени компиляции
    foo(new B(),new A()); // ошибка : порядок должен сохраняться
</div>

Однако, такое использование необязательных аргументов может считаться достаточно продвинутым.