是否可以使用条件编译设置静态常量?

时间:2010-08-04 17:59:31

标签: flex

我试图通过将变量传递给编译器来有条件地在类上设置一些公共静态常量,例如-define = CONFIG ::环境, 'testing_server'

这就是我想做的事情:

if(CONFIG::ENVIRONMENT=='production')
    public static const DOMAIN:String="production_site.com";
else if(CONFIG::ENVIRONMENT=='testing_server')
    public static const DOMAIN:String="secret_domain.com";

我已尝试过此代码的许多版本,但到目前为止所有内容都产生了一种或另一种错误。我成功的唯一方法是为每个环境设置一个编译器变量(除了想要的那个之外都是false),并使用以下语法:

CONFIG::PRODUCTION{
    public static const DOMAIN:String="production_site.com";
}
CONFIG::TESTING_SERVER{
    public static const DOMAIN:String="secret_domain.com";
}

显然这意味着我每次都必须修改长命令行设置。鉴于我已阅读的文档和各种教程,我认为我的初始方法是可行的。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

在这种情况下,对我们有用的一件事是#include。使用构建脚本生成具有声明的单行AS。然后使用#include将生成的AS文件包含在类中。

我不建议广泛使用包含,它们很丑陋并且可能导致问题,但在某些情况下使用非常小的用法。

答案 1 :(得分:0)

是的。我在我的代码中做了类似的事情:

trace('appMode = ' + CONFIG::appMode); 
if (CONFIG::appMode == "dev" || CONFIG::appMode == "tst") { 
    // if dev or tst
} else {
    // if anything else
}

我使用Flex Compiler属性中的“Additional Compiler Arguments”字段(项目 - > properties - > Flex Compiler)在fb4中分配常量appMode。该论点如下:

-define+=CONFIG::appMode,"'dev'"

请注意dev周围的嵌套双/单引号。

祝你好运!