01.08.2013, 03:46 | #1 |
Участник
|
Глупый вопрос про массив
Коллеги, я просто в замешательстве, вопрос до боли примитивный, но неожиданно стал для меня проблемой. Как объявить метод, который вернет массив (тот который не хиповый, не класс Array), не прибегая при этом к использованию EDT c array elements?
То есть, есть статический массив X++: int values[10] X++: int[10] parmValues() декларации X++: int[] parmValues() X++: int parmValues()[10] X++: int parmValues[10]() X++: int parmValues() Дакс 2012ый, стандатным массивом пользвался, наверное, ещё в тройке, помню что работало вроде бы, а как... Можно, конечно, отказаться в пользу массива Array или списка, или контейнера, но хотелось бы разобраться.
__________________
Axapta has seduced me deadly! |
|
01.08.2013, 07:57 | #2 |
Участник
|
|
|
01.08.2013, 08:15 | #3 |
Участник
|
В качестве однородного отсортированного массива можно использовать класс Set. Правда в него нельзя запихнуть два одинаковых элемента. Т.е. можно, ошибки не будет, но в Set попадет только один из них. К классу (в его статических методах) прилагается полезная математика: сложение и вычитание множеств...
|
|
01.08.2013, 08:29 | #4 |
Участник
|
Зачем Set? есть же Array. Но судя по вопросу автор про это знает.
От себя добавлю, если принципиально не хочется отказываться от синтаксиса масива, то вернуть или передать массив всё-таки можно, обернув предварительно в контейнер X++: static void JobTestArray(Args _args) { int test_out[3]; container getArray() { int test_in[3]; ; test_in[1] = 111; test_in[2] = 222; test_in[3] = 333; return [test_in]; } [test_out] = getArray(); info(strfmt("%1, %2, %3", test_out[1], test_out[2], test_out[3])); } |
|
|
За это сообщение автора поблагодарили: HorrR (2). |
01.08.2013, 10:10 | #5 |
Участник
|
X++: anytype parmValues()
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: belugin (3), S.Kuskov (3), HorrR (2). |
01.08.2013, 15:57 | #6 |
Участник
|
Хех, воистину, всё гениальное - просто! Про anytype ведь даже как-то не подумалось... Хотя вариант с оберткой в контейнер тоже весьма неплох! Спасибо, господа!
__________________
Axapta has seduced me deadly! |
|
01.08.2013, 16:40 | #7 |
Участник
|
Главное, чтобы на "принимающей" стороне не использовалась переменная типа anytype, потому что если anytype'у присвоить значение-массив, то ядро Аксапты до 2009-й включительно издавна падает. 2012-я не падает, но во время выполнения ругается на "недопустимую операцию для данного типа массива".
|
|
01.08.2013, 17:47 | #8 |
Участник
|
Та же ошибка возникает в 2012 при передаче строкового массива как anytype, даже если парсится в строго типизированную строковую переменную... С остальными типами всё нормально.
__________________
Axapta has seduced me deadly! |
|