Форум 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=144744)

Nemez 20.09.2010 12:30

класс Вектор
 
Привет! Кто-нибудь знает, что за класс Вектор и где про него можно прочитать?

-De- 20.09.2010 12:31

Привет! Вектор - это типизированный Array, прочитать в хелпе (гуглить as3 Vector, например).

КорДум 20.09.2010 12:37

Вектор же еще и быстрее работает/обрабатывается, верно?

-De- 20.09.2010 12:41

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

КорДум 20.09.2010 12:46

Эка я отстал от жизни, пора переходить на векторы!

leofit 20.09.2010 12:53

Вектор
1. Типизированный массив (хранит данные одного типа)
2. Плотный массив (индексы идут строго по порядку, пропуски не допускаются)

chabapok 20.09.2010 17:02

3. Vector это класс с модификатором final. От него нельзя делать производные классы, это сделано для оптимизаци
4. нельзя хранить в векторе классы, производные от типа которым объявлен вектор.

5. RTFM, а от так можно и всю документацию сюда процитировать...

но самое удобное - FD "знает" какого типа объекты хранятся в векторе и подсказки выдает....

expl 20.09.2010 22:59

Цитата:

нельзя хранить в векторе классы, производные от типа которым объявлен вектор.
Это откуда такое?

Код AS3:

class A { ...
class B extends A  { ...
 
var listA:Vector.<A> = new Vector.<A>();
listA[0] = new B(); //Вполне себе можно
 
А вот такое нельзя (видимо есть причны, но не очень очевидные):
var listB:Vector.<B> = new Vector.<B>();
var listA:Vector.<A> = listB;// Ошибка преобразования типов
// и даже если обойти проверку этапа компилящии - получим ошибку времени выполнения,
// печально, но правда


BlooDHounD 20.09.2010 23:23

Цитата:

Сообщение от expl (Сообщение 937434)
Это откуда такое?

как откуда? Вы считаете, что в вашем примере экземпляр класса B не является экземпляром класса A?
Цитата:

Сообщение от expl (Сообщение 937434)
Код AS3:

var listB:Vector.<B> = new Vector.<B>();
var listA:Vector.<A> = listB;// Ошибка преобразования типов
// и даже если обойти проверку этапа компилящии - получим ошибку времени выполнения,
// печально, но правда


там выше было про RTFM.
Код AS3:

var listA:Vector.<A> = Vector.<A>( listB );


chabapok 21.09.2010 01:21

у меня в документации так написано:

Код AS3:

 // This code doesn't compile even though Sprite is a DisplayObject subclass
 var v:Vector.<DisplayObject> = new Vector.<Sprite>();

насчет listA[0] = new B(); //Вполне себе можно
не знаю, но вроде ж получается, что нельзя. видимо, тут я не прав.


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

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