Actionscript 3 AS3:使用实例变量作为默认参数值

Actionscript 3 AS3:使用实例变量作为默认参数值,actionscript-3,Actionscript 3,我试图使用实例变量作为方法中的参数值,但它给了我一个错误。“参数初始值设定项未知或不是编译时常量” 不过我想使用一个非常量实例变量,并且我假设除了从另一个方法调用这个方法之外,还有其他方法可以解决这个问题。以下是我指的代码: public function attack(target:Fighter=this.target):void { } 那么: public function attack(target:Fighter):void { if(target == null)

我试图使用实例变量作为方法中的参数值,但它给了我一个错误。“参数初始值设定项未知或不是编译时常量”

不过我想使用一个非常量实例变量,并且我假设除了从另一个方法调用这个方法之外,还有其他方法可以解决这个问题。以下是我指的代码:

public function attack(target:Fighter=this.target):void {

}
那么:

public function attack(target:Fighter):void
{
    if(target == null)
        target = this.target;
}
老实说,命名一个变量
\u target
可能更容易避免混淆。您可以使用
target=\u target而不是
这个。

关于:

public function attack(target:Fighter):void
{
    if(target == null)
        target = this.target;
}
老实说,命名一个变量
\u target
可能更容易避免混淆。您可以使用
target=\u target而不是
这个。

关于:

public function attack(target:Fighter):void
{
    if(target == null)
        target = this.target;
}
老实说,命名一个变量
\u target
可能更容易避免混淆。您可以使用
target=\u target而不是
这个。

关于:

public function attack(target:Fighter):void
{
    if(target == null)
        target = this.target;
}

老实说,命名一个变量
\u target
可能更容易避免混淆。您可以使用
target=\u target
而不是
此。

您不能以这种方式设置可选参数。可以将可选参数设置为默认值,但不能设置为引用。在这种情况下,如果你想让它成为可选的,你可以这样做(或者按照@George Profenza的建议):


我看到您已经标记了一个正确的答案,但我将解释,由于您将任何空参数默认为
this.target
,您将受益于使用此解决方案,因此您不必每次调用attack()时都通过
null
,即-您可以执行
attack()
而不是
attack(null)

您不能以这种方式设置可选参数。可以将可选参数设置为默认值,但不能设置为引用。在这种情况下,如果你想让它成为可选的,你可以这样做(或者按照@George Profenza的建议):


我看到您已经标记了一个正确的答案,但我将解释,由于您将任何空参数默认为
this.target
,您将受益于使用此解决方案,因此您不必每次调用attack()时都通过
null
,即-您可以执行
attack()
而不是
attack(null)

您不能以这种方式设置可选参数。可以将可选参数设置为默认值,但不能设置为引用。在这种情况下,如果你想让它成为可选的,你可以这样做(或者按照@George Profenza的建议):


我看到您已经标记了一个正确的答案,但我将解释,由于您将任何空参数默认为
this.target
,您将受益于使用此解决方案,因此您不必每次调用attack()时都通过
null
,即-您可以执行
attack()
而不是
attack(null)

您不能以这种方式设置可选参数。可以将可选参数设置为默认值,但不能设置为引用。在这种情况下,如果你想让它成为可选的,你可以这样做(或者按照@George Profenza的建议):


我看到您已经标记了一个正确的答案,但我将解释,由于您将任何空参数默认为
this.target
,您将受益于使用此解决方案,因此您不必每次调用attack()时都通过
null
,即-您可以执行
attack()
而不是
attack(null)

不能将this.target用作参数。参数是来自类范围之外的值。你有多种选择。例如,您可以这样做:
公共函数攻击(target:Fighter):void{if(target==null)target=this.target;}
或者您只能在之前设置了目标的情况下进行攻击(可能使用
公共函数setTarget(newTarget:target):void
,等等。如果不了解游戏的更多信息,很难说什么是最好的解决方案。你不能使用this.target作为参数。参数是来自类范围之外的值。你有多个选项。例如,你可以这样做:
公共函数攻击(目标:战斗机):void{if(目标==null)target=this.target;}
或者您只能在之前设置了目标的情况下进行攻击(可能使用
公共函数setTarget(newTarget:target):void
,等等。如果不了解游戏的更多信息,很难说什么是最好的解决方案。你不能使用this.target作为参数。参数是来自类范围之外的值。你有多个选项。例如,你可以这样做:
公共函数攻击(目标:战斗机):void{if(目标==null)target=this.target;}
或者您只能在之前设置了目标的情况下进行攻击(可能使用
公共函数setTarget(newTarget:target):void
,等等。如果不了解游戏的更多信息,很难说什么是最好的解决方案。你不能使用this.target作为参数。参数是来自类范围之外的值。你有多个选项。例如,你可以这样做:
公共函数攻击(目标:战斗机):void{if(目标==null)target=this.target;}
或者您只能在之前设置了目标的情况下进行攻击(可能使用
公共函数setTarget(newTarget:target):void
,等等。如果不了解您的游戏,很难说什么是最佳解决方案