|
![]() |
#1 |
Участник
|
Как мне кажется, единственное решение именно через 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; }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: PMS (1). |
![]() |
#2 |
Участник
|
Цитата:
![]() |
|
|
За это сообщение автора поблагодарили: belugin (5), PMS (1). |
![]() |
#3 |
Участник
|
Владимир, спасибо большое за подробнейший ответ!
Это мне напомнило, почему вчера не заработал вариант: X++: if (_var) ![]() Видимо, все-таки, правильная проверка: X++: if (typeOf(_var) == 44) Цитата:
X++: void myMethod(anytype _var1 = null, anytype _var2 = null, anytype _var3 = null, anytype _var4 = null ..) { |
|
![]() |
#4 |
Участник
|
|
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от PMS
![]() Ну, тут нужно, так как дело в том, что нужно написать метод, в который может передаваться несколько параметров, а может и не передаваться (заранее это не известно):
X++: void myMethod(anytype _var1 = null, anytype _var2 = null, anytype _var3 = null, anytype _var4 = null ..) { Задача передачи не определенного количества параметров решается через передачу одного параметра-контейнера (Container). Сколько элементов в контейнере, столько и параметров. Разные элементы одного и того же контейнера могут иметь разные типы Можно вместо контейнера использовать объект STRUCT, если требуется знать имя параметра. Объект Struct также позволяет записывать разные типы данных в разные элементы структуры. По сути, Struct - это программная симуляция одной записи временной таблицы. Ну, или использовать 2 контейнера: Один с именами, другой со значениями. Хотя и это все не есть "правильные" решения. Если Вы пытаетесь сделать "обвязку" методов COM-объекта, то и надо делать отдельный метод класса Axapta под каждый конкретный метод конкретного Com-объекта. Посмотрите, для примера, классы CCADO... или семейство классов SysExcel...
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|