如何使用值数组初始化向量?

Rob*_*cks 6 arrays flash vector actionscript-3 strong-typing

如何使用值数组初始化向量?

我试过这个,它很顺利,但不起作用!

 langs = new Vector.<String>(["en","fr"]);
Run Code Online (Sandbox Code Playgroud)

我还需要将一个任意数组加载到一个向量中,如下所示:

 langlist = ["en","fr"];
 langs = new Vector.<String>(langlist);
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?


编辑:如何使用2D数组值初始化2D矢量?

 numbers = [[10,20,30], [10,20,30]];
 nums = Vector.<Vector.<Number>>(numbers);
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它给了我错误:

TypeError:错误#1034:类型强制失败

小智 49

初始化字符串向量的适当语法是:

var langs:Vector.<String> = new <String>[ "en","fr" ];
Run Code Online (Sandbox Code Playgroud)

要创建多维向量,请使用以下语法:

var v:Vector.<Vector.<int>> = new <Vector.<int>>[ new <int>[ 1, 2, 3 ], new <int>[ 4, 5, 6 ] ];
Run Code Online (Sandbox Code Playgroud)

请注意,以下语法有效但不太理想,因为它首先生成一个数组,然后将其强制转换为Vector,这个速度较慢,存在非常大的数组问题,并且不支持多维向量.

var langs:Vector.<String> = Vector.<String>( [ "en","fr" ] );
Run Code Online (Sandbox Code Playgroud)


mar*_*eno 3

我认为您不能将数组数组传递到 Vector 中:

Vector.<Vector.<Number>>
Run Code Online (Sandbox Code Playgroud)

类型强制不适用于复杂类型。如果您已经有了二维数组,请考虑以下转换代码:

var numbers:Array = [[1, 2, 3], [4, 5, 6]];
var numbersTemp:Array =
numbers.map(
    function (element:*, index:int, arr:Array):Vector.<Number> {
    return Vector.<Number>(element);
});
var nums:Vector.<Vector.<Number>> = Vector.<Vector.<Number>>(numbersTemp);
Run Code Online (Sandbox Code Playgroud)

当然,这将导致所有内容的新副本被创建两次,因此理想情况下您不会转换大列表。