Я не могу заставить функцию map() работать вообще с классом Vector.Как векторная карта() работает в ActionScript 3?
Результат всегда возвращается null - он должен вернуть мне новый вектор со значениями, возвращаемыми функцией addFive (этот пример, очевидно, не является моим реальным usecase).
Версия массива работает должным образом.
Кому-нибудь повезло с получением карты() для работы с 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 не изменяется функцией map(). – Stray
Подтверждено: передача либо v1, либо самого тестового класса в качестве объекта «this» (второй необязательный параметр для использования, где есть эта ссылка в функции) не имеет значения. – Stray
Подтверждено: использование функции addFive локально для кода, который запускает карту, также не имеет никакого значения. – Stray