【发布时间】:2011-02-02 14:49:52
【问题描述】:
我无法让 map() 函数与 Vector 类一起使用。
结果总是返回 null - 它应该返回一个带有 addFive 函数返回值的新向量(这个例子显然不是我的真实用例)。
数组版本按预期工作。
有没有人幸运地让 map() 与 Vector 一起工作?
public function test_vector_map():void {
var v1:Vector.<uint> = new <uint>[1,2,3];
trace(v1); // traces 1,2,3
var v2:Vector.<uint> = v1.map(addFive);
trace(v2); // traces null
}
protected function addFive(item:uint, index:int, vector:Vector.<uint>):uint
{
return item+5;
}
public function test_array_map():void {
var v1:Array = [1,2,3];
trace(v1); // traces 1,2,3
var v2:Array = v1.map(addSix);
trace(v2); // traces 7,8,9
}
protected function addSix(item:uint, index:int, array:Array):uint
{
return item+6;
}
【问题讨论】:
-
确认:v1 Vector 没有被 map() 函数改变。
-
已确认:将 v1 或测试类本身作为 'this' 对象(函数中有 this 引用时使用的第二个可选参数)没有区别。
-
已确认:将 addFive 函数设置为运行地图的代码的本地函数也没有任何区别。
-
已确认:我最初是用 uint 以外的类型打这个的,所以我认为它不是特定于 uint 类型的。
-
我自己试着搞砸了一段时间。非常奇怪的是 map 函数失败并返回 null 而没有任何错误消息。很可能是一个 flex/as3 错误。现在可能会卡住使用数组
标签: flash apache-flex actionscript-3