26.07.2024, 10:22 | #1 |
Участник
|
Синтаксис []
Доброго дня, странный затык, поискал в АОТе - примеров не нашёл. Собственно как передать массив в метод?
Если пытаться передать listNum[], то Синтаксическая ошибка. Если просто lineNum, то Аргумент _listNum несовместим с требуемым типом. Все компилируется если передать конкретный элемент listNum[1], но хочется-то все X++: static void JobArr(Args _args) { Integer listNum[]; void method(Integer _listNum[]) { Integer newList[]; ; newList = _listNum; } ; listNum[1] = 100; listNum[2] = 200; method(listNum[]); } |
|
26.07.2024, 11:48 | #2 |
Участник
|
Да походу в динамический массив аксапта не умеет копировать.
Попробуйте указать Integer newList[10]; и вызов method(listNum); может размер массива передавать первым параметром. |
|
26.07.2024, 11:57 | #3 |
Участник
|
По-моему это нельзя сделать. Или я не знаю как.
Или использовать класс обертку, который и передавать. |
|
26.07.2024, 15:00 | #4 |
Участник
|
Аксапта не использует в параметрах передачу значений по ссылке, если только это не объект. Соответственно, о массивах в параметрах не может быть и речи. Поэтому есть два варианта: либо использовать классы коллекций, либо сделать массив локальной переменной класса. Использование .NET типов также не позволяет использовать массивы.
__________________
// no comments |
|
26.07.2024, 15:57 | #5 |
Участник
|
Присваивать массивы нельзя, а передавать через параметры можно. Вот так:
X++: static void Job1210(Args _args) { Integer listNum[]; void method(Integer _listNum[]) { ; info(strFmt("%1", _listNum[1])); info(strFmt("%1", _listNum[2])); } ; listNum[1] = 100; listNum[2] = 200; method(listNum); } Т.е. newList = _listNum без CIL не вызовет ошибки компиляции, но не работает - массив newList останется пустой (я проверил). А внутри CIL скопируется ссылка на исходный массив (я не проверял).
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 26.07.2024 в 16:13. |
|
|
За это сообщение автора поблагодарили: Logger (7), dech (5). |
26.07.2024, 16:22 | #6 |
Участник
|
Но если размерность массива одинаковая, то можно не только передавать через параметры, то и присваивать:
X++: static void Job1210(Args _args) { int listNum[2]; void method(int _listNum[]) { int newList[2]; ; newList = _listNum; info(strFmt("%1", newList[1])); info(strFmt("%1", newList[2])); } ; listNum[1] = 100; listNum[2] = 200; method(listNum); }
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
26.07.2024, 16:24 | #7 |
Участник
|
Причем массив именно копируется при присваивании, а не передается по ссылке:
X++: static void Job1210(Args _args) { int listNum[2]; void method(int _listNum[]) { int newList[2]; ; newList = _listNum; newList[2] = 55; info(strFmt("%1", newList[1])); info(strFmt("%1", newList[2])); info(strFmt("%1", _listNum[2])); } ; listNum[1] = 100; listNum[2] = 200; method(listNum); }
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
27.07.2024, 09:38 | #8 |
Участник
|
Конечно в Аксапте нативно поддерживается работа со статическими массивами. Вспомните Dimension. Его можно и присваивать и передавать в качестве параметра. Можно делать массивы полей в таблице (через соответствующие EDT). Такие массивы поддерживаются и в предложениях select и в group by.
|
|
29.07.2024, 11:43 | #9 |
Участник
|
Добрый день.
Почему не контейнер? Так же не любит менять размерность. Такой же быстрый доступ по индексу. Те же накладные расходы при передаче в виде параметра. С точки зрения расположения в оперативке - одно и тоже. |
|
29.07.2024, 12:57 | #10 |
Участник
|
|
|
30.07.2024, 00:44 | #11 |
Участник
|
Да, логично, погорячился, это не просто offset. Так понимаю container = обёртка над qlist. Сути особо не меняет, вопрос применения: динамика - list, статика - container.
Последний раз редактировалось Товарищ ♂uatr; 30.07.2024 в 00:47. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Синтаксис для Notepad++ | 5 | |||
Синтаксис запросов в Обозревателе таблицы | 5 | |||
Синтаксис join'а | 4 | |||
Синтаксис Join | 3 |
|