Обработка неизвестного количества 

параметров  ActionScript 

 

 

Как известно из гл. 1, нельзя вызвать метод, не указав аргументы для всех  

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

аргументов, чем требуется. 

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

используется параметр . . . (rest). Он описывает массив, содержащий все  

аргументы, передаваемые в данный метод. Этот параметр может использоваться как  

самостоятельно, так и в сочетании с именованными параметрами. Когда параметр ... (rest) 

используется отдельно, описание метода имеет следующий обобщенный вид: 

function имяМетода (...массивАргументов) { 

В предыдущем коде имяМетода обозначает имя метода (или функции), а  

массивАргументов представляет имя параметра, присваиваемое автоматически создаваемому 

массиву, который содержит все передаваемые в данный метод аргументы. Первый 

аргумент (крайний левый в выражении вызова) хранится под индексом 0, и  

обратиться к нему можно с помощью выражения массивАргументов[0~\\. Последующие 

аргументы сохраняются по порядку слева направо. Таким образом, для обращения 

ко второму аргументу используется выражение массивАргументовЦ~\\, к третьему — 

выражение массивАргументов[2] и т. д. 

Параметр ... (rest) позволяет создавать очень гибкие функции, оперирующие 

произвольным количеством значений. Например, следующий код демонстрирует 

метод, который определяет среднее значение любых чисел, передаваемых в качестве 

аргументов: 

public function getAverage (...numbers) { 

var total = 0; 

for (var i = 0; i < numbers.length; i++) { 

total += numbers

return total / numbers.length; 

Обратите внимание, что представленный метод getAverage ( ) работает только 
с числовыми аргументами. Чтобы защитить этот метод от использования  
нечисловых аргументов, можно применить оператор is, рассматриваемый в подразд.  
«Восходящее и нисходящее приведения типов» разд. «Приведение типов» гл. 8. 
Параметр ... (rest) также может использоваться в сочетании с именованными 
параметрами. В этом случае он должен быть последним в списке параметров.  
Например, рассмотрим метод initializeUser( ), применяемый для  
инициализации пользователя в гипотетическом социальном сетевом приложении. В описании 
метода определяется один обязательный параметр name, за которым следует  
параметр . . . (rest) с именем hobbies: 
public function initializeUser (name, ...hobbies) { 
При вызове метода initializeUser( ) мы обязаны указать аргумент для  
параметра name и при желании можем указать дополнительный список хобби, разделяя 
элементы списка запятыми. Внутри метода параметру name присваивается  
значение первого переданного аргумента, а параметру hobbie s — массив всех  
оставшихся аргументов. Например, если вызвать данный метод следующим образом: 
initializeUserC"Hoss". "video games", "snowboarding"); 
то параметру name будет присвоено значение "Hoss ", а параметру hobbies —  
значение ["video games", "snowboarding"]. 




BACK NEXT

Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям