Показать сообщение отдельно
Старый 24.09.2013, 20:02   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,656 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Как мне кажется, единственное решение именно через typeOf(). Возможно, в комбинации с prmIsDefault(). Причем, значение typeOf(null) = 44, несмотря на то, что Types имеет значения от 0 до 17.

X++:
static client void Job_test(Args _args)
{
    void test(anytype _var = null)
    {
        if (prmIsDefault(_var))
            info('default parameters');
        else
            info('not default parameters');
            
        if (_var)
            info('exist value');
        else
            info('not exists value');

        if (typeOf(_var))
            info(strFmt('exist type \"%1\" typesNum = %2', typeOf(_var), int2str(typeOf(_var))));
        else
            info('not exists type');

    }
    ;

    warning('without parameters');
    test();
    info('');
    
    warning('set null');
    test(null);
    info('');
    
    warning('set empty string');
    test('');
    info('');
    
    warning('set value');
    test(1);
    info('');

    return;
}
PS: Хотя, скорее всего, анализ значения NULL и не нужен. Обычно подобные задачи возникают когда нет достаточно ясного понимания того, что же именно надо сделать. Как правило, в процессе реализации выясняется, что все это не очень-то и нужно...
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: PMS (1).