我有一些類實現這個接口:如何爲... params函數參數設置默認值?
function execute(entity:Entity, ...params):void;
這是確定的,但是,我想有這樣的:
function execute(entity:Entity, ...params = null):void;
,因爲不是每個類都需要PARAMS。
它引發編譯錯誤。
似乎我不能有AS3默認值... params。有沒有辦法做到這一點?
謝謝。
我有一些類實現這個接口:如何爲... params函數參數設置默認值?
function execute(entity:Entity, ...params):void;
這是確定的,但是,我想有這樣的:
function execute(entity:Entity, ...params = null):void;
,因爲不是每個類都需要PARAMS。
它引發編譯錯誤。
似乎我不能有AS3默認值... params。有沒有辦法做到這一點?
謝謝。
我不知道的任何方式來設置的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
}
無法訪問空值或未定義參數的成員'length' – Madbreaks
看看我的編輯是否有幫助,我在上面的代碼中添加了空檢查。同時確保您的變量名稱與您的實際代碼相匹配。 – ToddBFisher
function exec(entity:Entity, ...params){
// Set default values if no params passed:
params = arguments.length > 1
? params
: {foo:'defaultFooVal', bar:'defaultBarVal'};
// ...
}
燦在方法簽名中沒有像這樣設置默認值,但是你可以在函數體中做一些事情,比如'params = params || 'defaultVal';' – Madbreaks
我不是那種解決方案的粉絲tbh:p – Artemix
你需要指定一個默認值null嗎?我相信在沒有實際傳遞任何額外參數的情況下用... params調用函數是很好的。 –