Действительно ли возможно определить универсальный Вектор типа в Actionsctipt 3?

Должно быть

@Output() dataChange: EventEmitter<any> = new EventEmitter<any>();
9
задан BefittingTheorem 28 February 2009 в 17:45
поделиться

4 ответа

Таким образом, похоже, что ответ нет никакого способа неявно бросить Вектор типа к допустимому супер типу. Это должно быть выполнено явно с глобальным Вектором. <> функция.

Таким образом, моей фактической проблемой было соединение проблем :)

Это корректно для использования Вектора. как общая ссылка к другому Вектору, но, это не может быть выполнено как это:

var spriteList:Vector.<Sprite> = new Vector.<Sprite>()
var genericList:Vector.<Object> = new Vector.<Object>()
genericList = spriteList // this will cause a type casting error

Присвоение должно быть выполнено с помощью глобального Вектора () функция/бросок как так:

var spriteList:Vector.<Sprite> = new Vector.<Sprite>()
var genericList:Vector.<Object> = new Vector.<Object>()
genericList = Vector.<Object>(spriteList)

Это был простой случай меня не чтение документации.

Ниже некоторый тестовый код, я ожидал бы Вектор. бросать неявно к Вектору. <*>.

public class VectorTest extends Sprite
{
    public function VectorTest()
    {
        // works, due to <*> being strictly the same type as the collection in VectorContainer
        var collection:Vector.<*> = new Vector.<String>() 

        // compiler complains about implicit conversion of <String> to <*>
        var collection:Vector.<String> = new Vector.<String>()
        collection.push("One")
        collection.push("Two")
        collection.push("Three")

        for each (var eachNumber:String in collection)
        {
            trace("eachNumber: " + eachNumber)
        }

        var vectorContainer:VectorContainer = new VectorContainer(collection)

        while(vectorContainer.hasNext())
        {
            trace(vectorContainer.next) 
        }
    }
}

public class VectorContainer
{
    private var _collection:Vector.<*>

    private var _index:int = 0

    public function VectorContainer(collection:Vector.<*>)
    {
        _collection = collection
    }

    public function hasNext():Boolean
    {
        return _index < _collection.length
    }

    public function get next():*
    {
        return _collection[_index++]
    }
}
7
ответ дан 5 December 2019 в 01:19
поделиться

Я полагаю, что можно обратиться к невведенному Вектору, просто назвав его Vector (нет .<>)

0
ответ дан 5 December 2019 в 01:19
поделиться
var collection:Vector.<Object> = new Vector.<Object>()

возможно? Но я просто размышляю, не попробовали его.

-1
ответ дан 5 December 2019 в 01:19
поделиться
var collection:Vector.<Object> = new Vector.<Object>()

но только при предназначении для flash player 10 cs4

-3
ответ дан 5 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: