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

Некоторые параметры функций могут быть сделаны необязательными, с помощью знака вопроса перед именем аргумента :
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? Скорее всего, будет ошибка компиляции. Значит, такую функцию нельзя вызвать с одним параметром.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>.

Подробнее о форматировании

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.