2011-08-27 53 views
2

我延伸ArrayCollection類爲附加推送方法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})) 
+0

爲什麼這是錯的輸出,相當於?你到底在期待什麼? – JeffryHouser

回答

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