Показать сообщение отдельно
Старый 31.07.2012, 12:12
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
мне нужен класс, унаследованный от вектора, чтобы добавить к нему методов обработки этого вектора, но так как вектор- финальный класс, в отличии от массива, такое не представляется возможным, можно ли как-то это осуществить? работать с массивами не охото из-за скорости...
Я бы голову не морочил и просто написал:
Код AS3:
public class MyVector
{
    public const vector:Vector.<Type> = new Vector.<Type>;
 
    public function myOperation(value:Type):void
    {
          vector....
    }
}
// Использование
var myVector:MyVector = new MyVector();
myVector.vector[0] = new Type();
myVector.myOperation(new Type());
Инкапсуляция идёт лесом, но если оборачивать оператор доступа [] методами get(index:int):Type и set(index:int, value:Type) - пойдёт лесому же производительность, причём пойдёт очень далеко (это не haXe, inline-функций в as3 нет).

Вообще, в большинстве случаев нет выбора и приходится не давать доступ через [], а давать только через методы - просто потому что иначе целостность структуры данных ломается.

Ну и чтобы заменить Type на что-то другое придется копипастить класс Нормального решения в AS3 для этого нет. Ну или пожертвовать типизацией и заменить Type на Object (в 90% лучше заменить на Object/*)