PDA

Просмотр полной версии : Может ли функция возвращать не одно, а несколько значений?


willis83
31.01.2008, 22:22
Обычная функия возвращает одно значение

function fu(a) {
b = a + 1;
c = b + 5;
return b;
};А можно ли с помощью функции вернуть несколько значений которые она обрабатывает? Что-нибудь типа:

return (b,c);

Или вернуть массив?:rolleyes:

CrazyFlasher
31.01.2008, 22:23
массив конечно можно

willis83
31.01.2008, 22:30
А можешь показать как это будет выглядеть?
Не охото на каждый параметр функцию писать, лучше загоню их в один массив, в одной функции посчитаю и верну уже готовый массив.

CrazyFlasher
31.01.2008, 22:33
function (getArr:Array) : Array {
var returnArr:Array = getArr.concat();
returnArr.push(123);

return returnArr;
}

iNils
31.01.2008, 22:58
willis83, для оформления своего кода надо использовать теги .

willis83
31.01.2008, 23:48
Ладно, с этим всё понятно, а как мне передать значение переменной массива в свою переменную.
Моя функция обсчитывает _x, _y, _xscale, _yscale неких клипов по передаваемым функции параметрам. Тоесть мне надо передать одно из значений массива который возвращает функция в мою переменную

Mr. Fixit
31.01.2008, 23:57
function (getArr:Array) : Array {
var returnArr:Array = getArr.concat();
returnArr.push(mc._x);
returnArr.push(mc._y);

return returnArr;
}

willis83
01.02.2008, 00:15
Вы меня не так поняли. Я про код не самой функции, а уже про её вызов. Если простая функция, я могу написать:

mymovie._x = getx();


А если функция возвращает массив, то как мне передать в значение mymovie._x одно из значений массива?

CrazyFlasher
01.02.2008, 00:44
ну а код-то какой в этой функции? в getx()

Котяра
01.02.2008, 01:36
mymovie._x = getx();
mymovie._x0 = mymovie._x[0];
mymovie._x1 = mymovie._x[1];
// ...
// итп, лучше в цикле

CrazyFlasher
01.02.2008, 01:40
Котяра, вы вообще поняли, что сами написали?

wvxvw
01.02.2008, 02:26
function a():Array { return [1,2,3,4,5]};
trace(a()[0]+' : '+a()[1]+' : '+a()[2]+' : '+a()[3]+' : '+a()[4]);

willis83
01.02.2008, 02:29
Мда.... можно же прямо из функции пораздовать всем значение, просто аргументом функции должно быть имя клипа. Спасибо за помощь!!!! Классный форум

wvxvw
01.02.2008, 15:03
Ну, формулируйте вопросы так, чтобы было понятнее чего вы хотите, вам и ответы в тему будут... В вашем случае вопрос был бы:
"как одной функцией присвоить значения множеству объектов?", вернуть массив значений в таком случает - всего лишь один из вариантов, не всегда самый подходящий.

Котяра
01.02.2008, 17:43
Котяра, вы вообще поняли, что сами написали?
??? быдлокод . если результат функции массив, то почемуБыИНет?

Molecula
01.02.2008, 18:48
Типа такого что ли?
function getX():Array{
var arr_x:Array=[10,20,30];
return arr_x;
}
function setX(obj:Array){
trace(obj[0]);
}
setX(getX());