Как мне кажется, единственное решение именно через 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 и не нужен. Обычно подобные задачи возникают когда нет достаточно ясного понимания того, что же именно надо сделать. Как правило, в процессе реализации выясняется, что все это не очень-то и нужно...