20.02.2008, 14:57 | #1 |
Участник
|
Доступ к параметру по его имени.
Допустим, параметры функции - 3 переменных одного типа(по определённым причинам это не может быть массив). Так же, обращаться к каждому из них отдельно не имеет смысла(ведь их, например, может быть не 3, а 10). Допустим, имя каждого параметра - 'param'+целочисленный индекс.
Хотелось бы написать что-то типа: X++: for(ind=1,ind<=3,ind++)somefunction(VarName2Var('param'+int2str(ind))); З.Ы Если интересно, почему в данном случае не подходит массив, как контейнер однотипных обьектов, можно глянуть тут: Значение по умолчанию параметра типа EDT c array elements либо просто массива Возможно, кто-то решит изначальную проблему и тогда не прийдёться выдумывать ничего с несколькими параметрами, а просто юзать массив.
__________________
Axapta has seduced me deadly! Последний раз редактировалось HorrR; 20.02.2008 в 15:05. |
|
20.02.2008, 15:24 | #2 |
Участник
|
когда число параметров заранее не известно лучше в качестве параметра использовать контейнер
|
|
20.02.2008, 15:27 | #3 |
Moderator
|
X++: void myMethod(container _params) {; for(ind=1;ind<=conLen(_params); ind++) { currParam = conPeek( _params, ind ); } } |
|
20.02.2008, 15:35 | #4 |
Участник
|
Это логично. Но в данном случае количество параметров известно. А сказал я, что их может быть и 10 для того, что бы обобщить и систематизировать проблему, а так же обьяснить, почему не подходит вызов функци SomeFunc с каждым параметром отдельно в отдельном стейтменте.
__________________
Axapta has seduced me deadly! |
|
20.02.2008, 15:38 | #5 |
Участник
|
Спасибо, но контейнер мне не подходит, иначе бы сам написал. Дело в том, что параметров должно быть чёткое количество. Конечно никто не мешает делать проверку внутри, но метод получиццо неюзабельный, то есть для конечного пользователя не будет очевидным сколько параметров должен метод принимать при вызове, если конечно не посмотрит его реализацию.
__________________
Axapta has seduced me deadly! |
|
20.02.2008, 15:39 | #6 |
Участник
|
Количество параметров ф-и можно через MethodInfo (3ка) или DictMethod (4ка) узнать.
А чего хотим добиться такими манипуляциями?
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
20.02.2008, 15:53 | #7 |
Участник
|
|
|
20.02.2008, 15:53 | #8 |
Участник
|
Я не о том! Я о том, что нужно, что б в самом эдиторе компиль ругался на попытку вызвать этот метод скажем с 4мя, а не с 3мя параметрами(само собой, что в хинте по методу тоже должно отображаться нужное количество параметров), что в случае использования контейнера нереально. А количество параметров, если уж юзать контейнер, можно и без этого метода реализовать просто проверивь длину контейнера.
__________________
Axapta has seduced me deadly! |
|
20.02.2008, 15:58 | #9 |
Участник
|
Что именно? Обьяснение тут элементарное, как я уже говорил, пример данный привел, что бы продемонстрировать, что может возникнуть задача того же типа, но с использованием 10ти параметров. И тогда вот такая штука:
SomeFunc(param1); SomeFunc(param2); SomeFunc(param3); SomeFunc(param4); SomeFunc(param5); ............................. Будет явно не рациональной. А отдельно взятый метод должен иметь конкретное количество параметров. Просто нужен общий подход, который можно реализовать, как мне кажется, исключительно преобразованием имени параметра в параметр.
__________________
Axapta has seduced me deadly! |
|
20.02.2008, 16:11 | #10 |
Участник
|
Неадекватно будет делать такой парм метод. Я имею ввиду парм метод с 2-10 параметрами.
Я ведь правильно понимаю - что вы хотите автоматом генерить такой парм метод? Как правило параметр один. Больше - скорее исключение чем правило. Подумайте, насколько будет удобно в дальнейшем модифицировать такой метод. Цитата:
SomeFunc(param1);
SomeFunc(param2); SomeFunc(param3); SomeFunc(param4); SomeFunc(param5);
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
20.02.2008, 16:18 | #11 |
Участник
|
Цитата:
Сообщение от Alex_KD
Неадекватно будет делать такой парм метод. Я имею ввиду парм метод с 2-10 параметрами.
Я ведь правильно понимаю - что вы хотите автоматом генерить такой парм метод? Как правило параметр один. Больше - скорее исключение чем правило. Подумайте, насколько будет удобно в дальнейшем модифицировать такой метод. ИМХО годится.
__________________
Axapta has seduced me deadly! |
|