AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.08.2013, 03:46   #1  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Angry Глупый вопрос про массив
Коллеги, я просто в замешательстве, вопрос до боли примитивный, но неожиданно стал для меня проблемой. Как объявить метод, который вернет массив (тот который не хиповый, не класс 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  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
передача массива
Старый 01.08.2013, 08:15   #3  
Мартынов Дмитрий is offline
Мартынов Дмитрий
Участник
 
236 / 66 (3) ++++
Регистрация: 02.02.2004
Адрес: г. Москва
В качестве однородного отсортированного массива можно использовать класс Set. Правда в него нельзя запихнуть два одинаковых элемента. Т.е. можно, ошибки не будет, но в Set попадет только один из них. К классу (в его статических методах) прилагается полезная математика: сложение и вычитание множеств...
Старый 01.08.2013, 08:29   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Зачем 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  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
362 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
X++:
anytype parmValues()
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: belugin (3), S.Kuskov (3), HorrR (2).
Старый 01.08.2013, 15:57   #6  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Хех, воистину, всё гениальное - просто! Про anytype ведь даже как-то не подумалось... Хотя вариант с оберткой в контейнер тоже весьма неплох! Спасибо, господа!
__________________
Axapta has seduced me deadly!
Старый 01.08.2013, 16:40   #7  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Главное, чтобы на "принимающей" стороне не использовалась переменная типа anytype, потому что если anytype'у присвоить значение-массив, то ядро Аксапты до 2009-й включительно издавна падает. 2012-я не падает, но во время выполнения ругается на "недопустимую операцию для данного типа массива".
Старый 01.08.2013, 17:47   #8  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Та же ошибка возникает в 2012 при передаче строкового массива как anytype, даже если парсится в строго типизированную строковую переменную... С остальными типами всё нормально.
__________________
Axapta has seduced me deadly!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
наверное, глупый вопрос про numberSequence, но все же kitty DAX: Программирование 3 11.02.2009 10:04
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Глупый вопрос про СЛОИ kashperuk DAX: Программирование 5 12.06.2006 15:07
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36
Глупый вопрос про try .. catch Vadik DAX: База знаний и проекты 6 12.03.2003 18:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:29.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.