Проблема условной компиляции Flash Builder - PullRequest
0 голосов
/ 06 апреля 2011

как мне сделать следующее в проекте Flex?

package{

#ifdef BAR
    class Foo{
        ...implementation of Foo....
    }

#else
    class Foo{
        ...alternative implementation of Foo
    }
#endif
}

, если я попытаюсь сделать это с помощью следующих операторов компилятора -define CONFIG :: BAR, true -define CONFIG :: NOBAR, false

и запрограммируйте его следующим образом:

package{

CONFIG::BAR{
    class Foo{
        ...implementation of Foo....
    }
}

CONFIG::NOBAR{
    class Foo{
        ...alternative implementation of Foo
    }
}
}

тогда Flash Builder выдаст мне ошибку компиляции:

1018: Duplicate class definition: Main

как решить эту проблему?

Ответы [ 2 ]

4 голосов
/ 06 апреля 2011

Взгляните на Использование условной компиляции .Похоже, вам не нужно помещать класс в блок { }.

Если документация верна, это должно сработать:

package{

    CONFIG::BAR
    class Foo{
        ...implementation of Foo....
    }

    CONFIG::NOBAR
    class Foo{
        ...alternative implementation of Foo
    }
}
0 голосов
/ 06 апреля 2011

Как правило, если вы хотите сделать что-то подобное, вместо того, чтобы определять класс двумя разными способами, вы должны определить два разных подкласса одного и того же класса (или два разных класса, реализующих один и тот же интерфейс, если это необходимо). Затем внутри вашего предложения #ifdef вы должны назначить правильный подкласс для ссылочной переменной. Затем остальные классы будут ссылаться на эту переменную и перейдут к нужному определению класса.

...