AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2012, 22:48   #1  
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.
Старый 06.12.2012, 22:57   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
кстати. в исходной задаче нужно было выводить все числа.
в процедурном коде можно убрать if.
а объектно-ориентированный код становится еще короче.

X++:
class TestState
{
   str description;
}
void new(boolean _state, int _description)
{
    if( _state )
        description = _description;
}
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 mod #FIZZ) == 0), "Fizz");
        buzz = new TestState(((i mod #BUZZ) == 0), "Buzz");
        info(strfmt("%1%2 %3", fizz.getDescription(), buzz.getDescription(), i));
    }
}
Старый 06.12.2012, 22:59   #3  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
Cool
Все, я сдаюсь, тут опять две ошибки компиляции, одна в new, я ее вроде пофиксил, хотя не факт что правильно, т.к. не до конца понимаю задумку кода, а вторая в запускающем Job'е, снова путаница int/str...mazzy может все-таки не "на бумажке", а то очень интересно проверить результат, а оно работать не хочет... Прошу прощения, не сразу прочел что вы без аксы.

upd: Джобик из второго поста запустил, да, работает. Спасибо!

Последний раз редактировалось Lemming; 06.12.2012 в 23:04. Причина: upd
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Budget entries import in AX2012 Blog bot DAX Blogs 0 21.11.2012 00:12
DynamicsAxSCM: Visualizing Security in Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 29.08.2011 13:11
dynamicsaxbi: Screenshots of Dynamics AX 2009 Role Centers Blog bot DAX Blogs 0 18.03.2011 20:11
DynamicsAxSCM: Personalization of Role Centers in Dynamics AX 2009 Blog bot DAX Blogs 0 21.06.2010 16:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:32.