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

时间:2014-01-18 23:14:43

标签: actionscript-3

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

我想使用非常量实例变量,并且我假设除了从另一个方法调用此方法之外还必须有一些方法。这是我所指的代码:

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

}

2 个答案:

答案 0 :(得分:2)

怎么样:

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

老实说,也许更容易命名一个变量_target以避免混淆。您可以使用target = _target;代替this.

答案 1 :(得分:1)

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

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

我看到你已经标记了一个正确的答案,但我会解释一下,因为你将任何空参数默认为this.target,你将从使用这个解决方案中受益,所以你不必通过{{1每次你调用attack()即 - 你可以null而不是attack()