微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在接口中使用常量作为默认参数值:IDE可以,但是mxmlc失败吗?

如何解决在接口中使用常量作为默认参数值:IDE可以,但是mxmlc失败吗?

| 该代码似乎可以在IDE中很好地编译,但是命令行编译器(SDK 4.5 mxmlc.exe)报告“参数初始化程序未知或不是编译时常量。” senocular提供了一个很好的解释和一个可能的解决方法,但我希望有更高级的功能(例如命令行指令)。
package {
    public class Constants {
        public static const CONSTANT : int = 0;
    }
}


package {
    public interface IInterface {
            function foo( param : int = Constants.CONSTANT ) : void;
    }
}

package
{
    public class Concrete implements IInterface
    {   
            public function foo(param:int=Constants.CONSTANT):void
            {        
            }
    }
 }
    

解决方法

        根据Senocular,这全都与编译顺序有关。没有明确的方法来设置此顺序。 您可以使用定义编译器选项来定义内联常量,以避免出现此问题。 另一种方法是创建一个包含常量的库。库包含在用户类之前。 要创建库,请使用组件编译器:
compc -output lib\\Constants.swf -source-path src -include-classes Constants
编译应用程序时,包括该库:
mxmlc -include-libraries lib\\Constants.swf -- src\\Main.as
只是不要忘记在常量更改时重新编译该库,或者使用处理该问题的构建脚本。 对示例代码的简短注释: 接口不需要使用该常量,任何值都可以使用,并且对实现类具有相同的效果。 编程AS3-接口   实现此类函数声明的方法必须具有默认参数值,该默认参数值与接口定义中指定的值属于同一数据类型,但是实际值不必匹配。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。