2013-01-17 137 views
0

我有一些類實現這個接口:如何爲... params函數參數設置默認值?

function execute(entity:Entity, ...params):void; 

這是確定的,但是,我想有這樣的:

function execute(entity:Entity, ...params = null):void; 

,因爲不是每個類都需要PARAMS。

它引發編譯錯誤。

似乎我不能有AS3默認值... params。有沒有辦法做到這一點?

謝謝。

+1

燦在方法簽名中沒有像這樣設置默認值,但是你可以在函數體中做一些事情,比如'params = params || 'defaultVal';' – Madbreaks

+0

我不是那種解決方案的粉絲tbh:p – Artemix

+1

你需要指定一個默認值null嗎?我相信在沒有實際傳遞任何額外參數的情況下用... params調用函數是很好的。 –

回答

3

我不知道的任何方式來設置的params比在聲明中對空數組以外的某種默認值,但周圍的工作會是這樣的:

function exec(entity:Entity, ... extraParams) 
    { 

     // EDIT: strange that you are getting null, 
     // double check your variable names and if needed you can add: 
     if(extraParams == null) 
     { 
      extraParams = new Array(); 
     } 

     if(extraParams.length == 0) // If none are specified 
     { 
      // Add default params 
      extraParams[0] = "dude"; 
      extraParams[1] = "man"; 
     } 

     // the rest of the function 
    } 
+0

無法訪問空值或未定義參數的成員'length' – Madbreaks

+0

看看我的編輯是否有幫助,我在上面的代碼中添加了空檢查。同時確保您的變量名稱與您的實際代碼相匹配。 – ToddBFisher

0
function exec(entity:Entity, ...params){ 
    // Set default values if no params passed: 
    params = arguments.length > 1 
       ? params 
       : {foo:'defaultFooVal', bar:'defaultBarVal'}; 
    // ... 
} 
相關問題