我有一个像
这样的功能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
答案 0 :(得分:1)
ASC的类依赖性的相当普遍的问题,因为依赖关系分析不包括默认参数初始值设定项(从来没有,因为const参数初始值设定项可能在ASC中引起循环引用)。
因此,如果您直接致电ASC,则可以在NotificationState
课程前面移动notify
课程。
其他方法是将您的consts放入不同的库中,并在需要时包含生成的SWC。
除非你使用include
指令,否则你也可以在同一个类中定义所需的类型,有点丑陋。
将仅CONST类标记为public final
以向编译器提供提示。
如果您的CONST类和使用它们作为默认参数初始值设定项的类都不从其他类继承,则从一些简单的基类扩展使用const初始值设定项的类。即使有没有依赖项,ASC'倾向于'在仅基类之后编译超类。