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

Некоторые параметры функций могут быть сделаны необязательными, с помощью знака вопроса перед именем аргумента :
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
Для отсева спамеров)
To prevent automated spam submissions leave this field empty.