gpt4 book ai didi

arrays - ArrayCollection 扩展错误

转载 作者:行者123 更新时间:2023-12-04 06:16:09 25 4
gpt4 key购买 nike

我扩展了 ArrayCollection 类以添加推送方法

package com.cargo.collections
{
import mx.collections.ArrayCollection;

public class DataCollection extends ArrayCollection {

public function DataCollection(source:Array = null) {
super(source);
}

public function push(...parameters):uint {
var i:uint = source.push(parameters);
this.refresh();
return i;
}
}
}

但推送的数据是数组:/
var test:DataCollection = new DataCollection({id: 1});
test.source.push({id: 2});
test.push({id: 3});

输出是
test = Array( {id: 1}, {id: 2}, Array({id: 3}) )

最佳答案

在您的示例中 ...parameters创建一个包含传递给该函数的所有参数的数组。这应该按预期工作:

public function push(...parameters):uint {
var i:uint = source.push(parameters[0]);
this.refresh();
return i;
}

或者,如果您的目的是启用多个参数的推送,您可以使用 Function.apply() 方法,该方法会将给定数组转换为多个参数:
public function push(...parameters):uint {
var i:uint = source.push.apply(null,parameters);
this.refresh();
return i;
}

这相当于说
var i:uint = source.push(parameters[0],parameters[1],parameters[2]);  // etc

关于arrays - ArrayCollection 扩展错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com