Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Задать тип для Vector.<T> во время выполнения (http://www.flasher.ru/forum/showthread.php?t=198232)

MrYeti 22.04.2013 18:18

Задать тип для Vector.<T> во время выполнения
 
Здравствуйте. Собственно вопрос указан в теме: можно ли в классе вектор задавать тип во время выполнения? Можно конечно использовать класс Object, но тогда утрачивается идея вектора и делает его похожим на обычный массив с нюансами. Есть ли в ActionScript механизм, похожий на обобщения в C#?

Sync 22.04.2013 18:26

а изменение в runtime тип вектора не приводит к "утрачивается идея вектора и делает его похожим на обычный массив с нюансами."?

Tails 22.04.2013 18:28

Мне не известна такая возможность. Разве что, тип хранимых значений в векторе будет супер классом необходимых вам вариантов. Тогда, получить объект определённого типа можно будет так:
Код AS3:

var vec:Vector.<SomeClass>;
trace(vec[0] as MyClass);

При условий, что MyClass расширяет SomeClass.

MrYeti 22.04.2013 18:36

Tails: такое решение мало чем отличается от Object, но спасибо за ответ, я тоже уже тоже не нашел подобных возможностей, перекопав документацию.
Sync: не утрачивается. Можно представить ситуацию, когда у нас есть овощи и фрукты, которые нужно разместить в разных корзинах, но сама система заранее не знает ничего об овощах и фруктах и узнаёт только во время выполнения, когда создаются разные корзины для овощей и для фруктов. Система получается более гибкой, так как можно легко добавить другие типы, например ягоды и система сама будет создавать корзину для ягод.

Sync 22.04.2013 18:52

Цитата:

Сообщение от MrYeti (Сообщение 1130822)
не утрачивается. Можно представить ситуацию, когда у нас есть овощи и фрукты, которые нужно разместить в разных корзинах, но сама система заранее не знает ничего об овощах и фруктах и узнаёт только во время выполнения, когда создаются разные корзины для овощей и для фруктов. Система получается более гибкой, так как можно легко добавить другие типы, например ягоды и система сама будет создавать корзину для ягод.

Те же яйца - вид в профиль.
ну используйте наследование или интерфесы

chamele0n 22.04.2013 19:10

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

AlexLucas 22.04.2013 19:20

Лучше использовать интерфейсы как посоветовал Sync, если нужно ложить в корзины не всё подряд, а объекты определённых типов.

MrYeti 22.04.2013 20:14

Интерфейсами уже и начал делать, спасибо всем за информацию! chamele0n: необходим не винегрет в одном массиве данных. В каждом векторе хранятся данные лишь одного типа.

Akopalipsis 22.04.2013 20:41

Код AS3:

var vec:Vector.<Sprite>;
var vec:Vector.<Number>;

так менять? а они там вроде только одного типа и могут быть...

Sync 22.04.2013 20:45

имхо, ТС сам не понимает что и зачем, но твердо убежден что вектор ему необходим.


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

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