а вот объектно-ориентированная многословная реализация, если не лень заводить класс в 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.