Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как присваиваются переменные? (http://www.flasher.ru/forum/showthread.php?t=149994)

Basil.Sinkevich 04.02.2011 15:53

Как присваиваются переменные?
 
Народ, столкнулся с такой проблемой:
В объекте объявлен массив

public var nodes:Array;

В теле он заполняется
В этом же объекте есть функция, которая должна работать с копией этого массива, изменять эту копию и тд, объявляю внутри функции так:

var nods:Array = nodes;

при этом получается, что при изменении nods, изменяется и nodes, получается, что по сути в nods передается ссылка на nodes. Как этого избежать?

Bgg 04.02.2011 16:04

Сделать копию, например так:
Код AS3:

var a:Array = [1,2,3];
var b:Array = new Array();
 
b = b.concat(a);
b[0] = "x";
 
trace("a:"+a);
trace("b:"+b);


Basil.Sinkevich 04.02.2011 16:08

В массиве объекты, свойства которых и изменяются, такой способ не помог

derhab 04.02.2011 16:16

копия массива
Код AS3:

var nods:Array = nodes.slice();


Basil.Sinkevich 04.02.2011 16:21

К сожалению не помогает простое копирование массива, надо ещё как-то скопировать все объекты, которые являются элементами массива

-De- 04.02.2011 16:23

Примитивные типы присваиваются по значению, остальные - по ссылке. Если переменная сложного типа заносится в массив, то в массиве тоже только ссылка, ясен пень.
Универсального метода копирования обьекта любого типа - нет.

Basil.Sinkevich 04.02.2011 16:27

Спасибо, понял, буду ковырять =)

derhab 04.02.2011 16:37

может пригодится
http://flasher.ru/forum/showpost.php...8&postcount=14


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

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