Показать сообщение отдельно
Старый 06.12.2012, 22:48   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
а вот объектно-ориентированная многословная реализация, если не лень заводить класс в AOT. Но зато тело цикла не содержит деталей реализации - детали в классе.
X++:
class TestState
{
   boolean state;
   str description;
}
void new(int i, int num, int _description)
{
    state = i mod num;
    if( state )
        description = _description;
}
boolean getState()
{
    return state;
}
str getDescription()
{
    return description;
}
/////////////////////////////////////////
#define.FIZZ(3)
#define.BUZZ(5)
static void FizzBuzzImpl(Args _args)
{
    int i;
    TestState fizz, buzz;
    ;

    for (i = 1; i <=100; i++)
    {
        fizz = new TestState(i, #FIZZ, "Fizz");
        buzz = new TestState(i, #BUZZ, "Buzz");
        if( fizz.getState() || buzz.getState() )
        {
            info(strfmt("%1%2 %3", fizz.getDescription(), buzz.getDescription(), i));
        }
    }
}
вместо параметра num в методе new можно сделать пару классов-потомков
вместо простой конкатенации строк FizzBuzz можно сделать класс, который формирует вывод...

В любом случае, это будет лучше чудовищного switch.