Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   параметр-переменная в AS. как? (http://www.flasher.ru/forum/showthread.php?t=98177)

Pasha L 08.07.2007 13:55

параметр-переменная в AS. как?
 
Здравствуйте. Как сделать так, чтобы функция меняла значения параметров?
Типа:
Код:

function AssignTo5(x:Number){
    x=5;
}
var i:Number=0;
AssignTo5(i);

но, конечно, такой вариант не прокатывает: он изменяет только x внутри функции, но не i.

etc 08.07.2007 16:29

Pasha L, отредактируйте свой пост и оформите код тегами [code][/code].

iNils 08.07.2007 16:43

Вот так
Код:

var i:Number=0;
i = 5;

:D

Pasha L 08.07.2007 18:55

__etc, похоже, это сделал уже кто-то за меня :) .
iNils, ясное дело, что и так можно в данном случае. Но это я просто привел самый простой пример. Меня интересует именно изменение из функции.

DarkLight 08.07.2007 18:58

надо чтобы параметр передавался по ссылке(во флеше это объекты, массивы). Соответственно передать в ф-ю ссылку на объект и менять его свойства

Kikasso 08.07.2007 19:09

1)Можно просто вернуть параметр.
Код:

function f(x){
return x*5;
}
x = 5;
trace(x);
x = f(x);
trace(x);

2)Если передать параметром любой объект, то будет изменет сам объект.
Код:

var arr:Array = [1,2,3];
function f(o){
o[1] = 22;
}
trace(arr);
f(arr);
trace(arr);


Pasha L 08.07.2007 19:23

Про обычный возврат мне известно :) Но, бывает, одним им не обойдешься...

Про объекты понятно. Но неужели нужно для этого создавать свой собственный класс? или даже массив делать?

Kikasso 08.07.2007 19:33

Любой объект передается по ссылке.

etc 08.07.2007 19:47

Числа, строки и булевы значения к таким объектам не относятся.

Kikasso 08.07.2007 20:13

Литералы не относятся, а объекты вполне относятся:
Код:

function f(o){
o['x'] = 22;
}
o = false;
trace(o['x']); //undefined
f(o);
trace(o['x']); //undefined
o = new Boolean(true);
trace(o['x']); //undefined
f(o);
trace(o['x']); //22

..код только для примера, так писать ессно не надо..


Часовой пояс GMT +4, время: 16:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.