2010-06-08 22 views
3

我想在一個NetConnection調用傳遞一個休息,這樣的事情:通...剩下的一個NetConnection呼叫

public function requestData(service : String, ...params) : void 
{ 
nc.call(service, params); 
} 

這一點,因爲呼叫期待每個參數不起作用被分開逗號,如:

nc.call(service, params[0], params[1], params[2]); 

我已閱讀了一些關於應用的帖子,但是我找不到針對此特定情況的解決方案。

回答

3

嘗試這種情況:

public function requestData(service : String, ...params) : void 
{ 
    var applyArgs:Array = params && params.length > 0 
          ? [service].concat(params) 
          : [service]; 
    nc.call.apply(nc,applyArgs);  
} 

我還沒有測試的代碼這個特定的片,但因爲該函數::申請的第二個參數需要的是一個數組,將被轉換爲的參數的列表,這應該工作(除非我犯了一些愚蠢的錯誤...沒有編譯器的幫助,所以在!)。

基本上,applyArgs陣列將始終包含service的第一個位置。如果有更多的額外參數,它們將連接到這個數組:結果就是你傳遞的應用。

+0

謝謝胡安!這工作正常:)有一個細節我無法明白的是爲什麼你檢查PARAMS這裏: PARAMS && params.length> 0 這不就是一樣的: params.length> 0 – 2010-06-09 07:51:39

+0

別客氣。檢查在那裏,因爲我通過參數可能爲空,所以我試圖避免將null連接到applyArgs。但我剛剛檢查和params似乎總是一個數組,如果沒有其他參數傳遞,零元素。所以你可以做'[service] .concat(params)'並且移除if。 – 2010-06-09 12:57:59