Возврат ActionScript или возврат данных функцией

На этом уроке ActionScript мы рассмотрим 2 вопроса:

  1. Возврат ActionScript или возврат данных функцией
  2. Дополнительная информация

Как было показано в уроке о передаче параметров ActionScript функции, переменные, которые находятся внутри функции ActionScript в языке программирования  являются локальными для неё, т.е. они не доступны для внешнего кода, относительно этой функции. Однако, очень часто у Вас будет возникать необходимость в использовании результатов работы функции внешним кодом.

Чтобы решить эту задачу нужно воспользоваться способностью функции возвращать данные (возврат ActionScript). Сделать это просто: в самой последней строке функции запишите ключевое слово return (вернуть), затем, после пробела напишите переменную (var), значение которой и будет возвращаться функцией.

Для того чтобы использовать функцию, возвращающую данные (возврат ActionScript) нужно вызывать её в виде значения переменной (вызов функции ActionScript). Эта переменная будет содержать возвращаемое функцией значение, которое Вы можете использовать также как и значение любой другой переменной в Вашем скрипте. Например, если функция возвращает количество проданного за сегодняшний день товара, то она должна быть записана следующим образом:

Значения, возвращаемые функцией (возврат ActionScript), могут принадлежать к любому типу данных ActionScript, включая как простые (String, Number, Boolean), так и сложные (Object, ActionScript Array или пользовательские классы, созданные Вами). Тип возвращаемых данных должен быть обязательно указан сразу после закрывающей круглой скобки в строке с аргументами. Обязательно проверьте соответствие типа данных для возвращаемого значения и того, что Вы получаете на самом деле. Если будет несоответствие, то во время воспроизведения скрипта возникнет ошибка!

Возврат данных функцией (возврат Actionscript)

Откройте панель Actions.

Запишите функцию, например:

После закрывающей круглой скобки поставьте двоеточие и запишите тот тип данных, который соответствует возвращаемому значению:

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

Между фигурными скобками запишите инструкции, которые должна выполнить функция:

Зипишите ключевое слово return и через пробел имя переменной, значение которой должна возвращать функция:

Сразу после функции запишите переменные, которые будут передаваться в качестве аргументов этой функции:

Завершите Ваш код декларацией переменной, которая будет содержать конечный результат работы всего кода:

Проверьте результат, используя метод trace Actionscript:

Нажмите клавиши Ctrl + Enter. Запустится Flash Player для просмотра результата возврата ActionScript.

В итоге весь код в редакторе скрипта панели Actions должен выглядеть так:

Возврат ActionScript

В окне Output появится итоговый результат работы функции.

Панель Output

Дополнительная информация

Приведенный выше код можно было бы записать и так:

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

Нельзя записывать что-либо ещё после инструкции со словом return кроме закрывающей фигурной скобки, т.к. подобные действия вызовут ошибку во время воспроизведения flash-ролика. Существует, правда, одно исключение из этого правила: это можно делать если ключевое слово return будет находится внутри условного выражения if-else, которое будет рассмотрено в уроке «Использование условных операторов else и else if». Хотя и там мы увидим, что, по большому счету, это правило особенно и не нарушается.

Возврат ActionScript или возврат данных функцией: 9 комментариев

  1. А как сделать так, чтобы функция возвратила 2 и больше типов данных? К примеру, функция принимает два значения Number и один – String, а также возвращает 1 Number и один String. Как будет выглядеть такая ф-ция?

    1. можно запихнуть результат в массив или объект, и вернуть этот объект. Пример: function calc(numToAdd1:Number, sign:String, numToAdd2:Number):Number { var returnObj:Object; var result:Number; // // код функции // returnObj = {num1:numToAdd1, sign:sign, num2:numToAdd2, result:result}; return returnObj; } а потом извлеч все что тебе надо из этого объекта, используя ключи num1, sign …

  2. Я раньше немного изучал С++, в связи с этим вопрос: В С++ можно было сделать так: cout << имяфункции(); // выводилось на экран возвращаемое значение функции. Пробовал это сделать методом trace – неполучилось (впринципе понятно почему). А есть ли возможность в as3 подобным образом как в С++ выводить значения ф-ций или обязательно создавать “промежуточную” переменную, инициализировать ее с ф-цией и тогда trace-ом только выводить на экран?

  3. Михаил, немного не понял. Если Вам не сложно могли бы полностью написать (весь код). Мне так проще будет анализировать. Не получается самому прописать ключи так чтобы они заработали (пока “не догоняю”).

  4. зачем создать функцию если просто можно var one:Number = 1; var second:Number = 2; var third:Number = one + second; trace(third);

  5. Приведите пожалуйста пример где можно использовать возврат данных функциии.

    1. где угодно. например вычисляем факториал function factorial(count:Number){ var result:Number=1; for (var i:Number = 1; i<count+1; i++) result = result * i; return result; } //пример вызова trace(factorial(5)); //вернет 120 т.е. 1*2*3*4*5 trace(factorial(4)); //вернет 24 //еще результат функции удобно использовать в условных операторах var chislo:Number=5;// в реальной программе значение будет результатом вычислений(как правило) if (factorial(chislo)<500){ /* очень полезный код который выполнится только если факториал числа из переменной chislo будет меньше 500 */ trace(factorial(chislo)); }

  6. Отличные уроки. По этой теме не плохо было рассмотреть особенности передачи параметров в функции как ссылки и как значения. Ссылки можно использовать для возвращения нескольких результатов.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *