将static const string设置为param的默认值并遇到错误1047

时间:2016-01-12 09:09:00

标签: actionscript-3

我有一个像

这样的功能
public function notify(messageKey:String, messageArgs:Array = null, state:String = NotificationState.INFO):void 

,其中

public class NotificationState {
    public static const INFO:String = "info";
    public static const WARN:String = "warn";
    public static const ERROR:String = "error";
    public static const SUCCESS:String = "success";

    public function NotificationState() {
        throw new AbstractClassError();
    }
}

这会导致错误1047:参数初始化程序未知或不是编译时常量

显然NotificationState.INFO是一个常量字符串,所以应该是编译时常量不是吗?

那么为什么会发生这种错误?


ps,我正在使用Flash Builder 4.7

1 个答案:

答案 0 :(得分:1)

ASC的类依赖性的相当普遍的问题,因为依赖关系分析包括默认参数初始值设定项(从来没有,因为const参数初始值设定项可能在ASC中引起循环引用)。

  • 因此,如果您直接致电ASC,则可以在NotificationState课程前面移动notify课程。

  • 其他方法是将您的consts放入不同的库中,并在需要时包含生成的SWC。

  • 除非你使用include指令,否则你也可以在同一个类中定义所需的类型,有点丑陋。

  • 将仅CONST类标记为public final以向编译器提供提示。

  • 如果您的CONST类和使用它们作为默认参数初始值设定项的类都不从其他类继承,则从一些简单的基类扩展使用const初始值设定项的类。即使有没有依赖项,ASC'倾向于'在仅基类之后编译超类。