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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.04.2009, 11:20   #1  
cerbo is offline
cerbo
Участник
 
25 / 11 (1) +
Регистрация: 02.10.2008
! Будьте осторожны со сложными условиями
Неявное преобразование происходит не только из int в boolean, но и наоборот:
X++:
    int d= 10;
    boolean t= false;
    ;

    t= d == (5 || 10);  // false    
    t= d == (5 && 10);  // false
    d= t;               // 0
Проблема в том, что компилятор пропускает такое без звука в отличии от, например, C++ или C#. В сложном условии легко что-то не заметить и потом потратить очень много времени на отладку, как это произошло со мной . MSSQL ведет себя так же (про других врать не буду), а т.к. у нас один и тот же логический аппарат используется и во встроеных запросах и в простых расчетах, то может от сюда ноги ростут?

К стати первая строчка могла бы стать элегантной заменой этому:
X++:
    t= (d == 5 || d == 10); // true
__________________
Dynamics AX 4.0.2501.122 SP2, kernel 4.0.2163.0, MS SQL 2005
Теги
неявное преобразование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Будьте осторожны с RecordInsertList miklenew DAX: Программирование 6 20.05.2008 15:39
баг в 2.5. Будьте осторожнее с символом "_" подчеркивание levsha DAX: Программирование 5 07.12.2004 12:26
Заказы-склад комплектация AK-76 DAX: Функционал 2 05.11.2003 10:37
И еще раз о слоях PlasticinE DAX: Программирование 2 22.01.2002 22:44

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

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

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