說法如果我有這樣一個功能:命名動作
public function defaultValues(first = 1,second =2,third = 3)
{
trace(first);
trace(second);
trace(third);
}
我怎麼能只透過在第二= 20的值調用這個函數?
說法如果我有這樣一個功能:命名動作
public function defaultValues(first = 1,second =2,third = 3)
{
trace(first);
trace(second);
trace(third);
}
我怎麼能只透過在第二= 20的值調用這個函數?
ActionScript3不支持命名參數。如果你真的想這個問題,您可以使用關聯數組...但我不建議這樣做,除非你真的想成爲動態:
public function defaultValues(params:Object)
{
var first = "first" in params ? params.first : 1;
var second = "second" in params ? params.second : 2;
var third = params.third ? params.third : 3;
trace(first);
trace(second);
trace(third);
}
然後,你可以把它叫做:
defaultValues({second: 99});
您可能希望僅使用一個參數重載該方法,並且重載的方法使用默認值爲第一個和第三個參數的3 param方法。
這將工作。但實際上這是一個語法問題,而不是一個解決方法的問題。語法可能嗎? – basarat 2011-06-13 11:08:43
ActionScript不支持重載方法。 – Constantiner 2011-06-13 11:10:47
@Constantiner true。我剛剛證實。謝謝。 – basarat 2011-06-13 11:33:52
你應該叫:
defaultValues(1, 20);
BTW是極其糟糕做法不使用嚴格類型在ActionScript。也許你有Javascript或ActionScript 2的背景,但它不能成爲藉口。因此,您的方法應該如下所示:
public function defaultValues(first:int = 1,second:int =2,third:int = 3) : void
{
trace(first);
trace(second);
trace(third);
}
我有c#背景,並注意到編譯器警告無論如何:)所以沒有內置的語法這樣的c#?參數總是需要位置? – basarat 2011-06-13 11:12:50
是的。你是對的。 AS3不支持命名參數/參數。你可以使用關聯數組......如果你想...但它很醜。 – 2011-06-13 11:14:24
對。您可以傳遞與默認值相同的值,然後傳遞其他值,例如在我提供的代碼中。 – Constantiner 2011-06-13 11:14:53
您可能只有該功能的參數類。 雖然這有點矯枉過正,但它會爲您提供嚴格打印的可選參數。但它確實需要更多的編碼。
class DefaultValuesParams {
public var first:int = 1;
public var second:int = 2;
public var third:int = 3;
}
var optionalArgs:DefaultValueParams = new DefaultValueParams();
optinalArgs.second = 20;
defaultValues(optionalArgs);
in c#你可以做defaultValues(second:20);參考:http://msdn.microsoft.com/en-us/library/dd264739.aspx – basarat 2011-06-13 11:09:52