Некоторые параметры функций могут быть сделаны необязательными, с помощью знака вопроса перед именем аргумента :
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
}
}
Хотя рекомендуется ставить необязательные параметры в конец списка аргументов, вы можете использовать их в начале или в середине.
К тому же, необязательные параметры являются также
независимыми в 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()); // ошибка : порядок должен сохраняться
Однако, такое использование необязательных аргументов может считаться достаточно продвинутым.
Комментарии
необязательные параметры в середине
Довольно странная штука, во всех языках программирования, насколько я знаю, необязательные параметры могут быть только в конце.
Тут компилятор пытается определить, где какой параметр по типам данных. А что компилятор будет делать в такой ситуации:
function some(?a : Int, b : Int)
some(5);
5 - это параметр a или b? Скорее всего, будет ошибка компиляции. Значит, такую функцию нельзя вызвать с одним параметром.
Отправить комментарий