As3 Vector <T>параметрический ТИП - PullRequest
2 голосов
/ 15 ноября 2011

У меня есть один экземпляр вектора, и я экспортирую SWF с помощью Flash Player 10 / 10.1.

Я хочу инициализировать его параметрическим типом.Я попытался следующим образом:

var someType:Class = MyCustomClass;
var v:Vector.<someType> = new Vector.<someType>();

Но это не работает !!Есть способ сделать это?

Надеюсь, вопрос ясен: -)

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

someType - экземпляр типа класса;тогда как Vector является контейнером этого типа.

Это должно быть:

var v:Vector.<MyCustomClass> = new Vector.<MyCustomClass>();

В противном случае я заметил, что Haxe скомпилирует это как:

var v:Vector.<Object> = new Vector.<Object>();

Flashполиморфизм отсутствует, если у вас есть класс A и класс B, и вы попытаетесь переместить их в вектор типа Class, вы получите сообщение об ошибке:

Пример

package
{
    import flash.display.Sprite;

    public class test extends Sprite
    {
        public function test()
        {
            var v:Vector.<Class> = new Vector.<Class>();

            var a:A = new A();
            var b:B = new B();

            v.push(a);
            v.push(b);
        }
    }
}

Ошибка:

TypeError: Error #1034: Type Coercion failed: cannot convert A@43a2ff1 to Class.
1 голос
/ 15 ноября 2011

Джейсон прав. Вы не можете сделать это. Мне жаль. Я столкнулся с той же проблемой некоторое время назад.

Динамически создавать типизированный Vector из аргумента функции?

Отстой, не правда ли? : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...