27.06.2005, 15:05 | #1 |
NavAx
|
Баг в X++ - передача container в методы
Столкнулся с проблемой.
В общем, вкратце ситуация такова - при вызове метода с параметров типа container, такие параметры передаются только для чтения. За примером далеко ходить не надо. Вот класс c рекурсивным статическим методом. Если заменить параметры на int - посчитает до 10ти. Если с контейнером - зациклится, выдавая 1. Аксапта 3 SP3 CU1. PHP код:
PHP код:
|
|
27.06.2005, 15:17 | #2 |
Administrator
|
ИМХО, это не бага.
container является примитивным типом. Как и все переменные примитивных типов, переменные типа container передаются по значению.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
27.06.2005, 15:19 | #3 |
NavAx
|
Да на здоровье, пускай передаются.
Оно локально в методе не даёт изменить переданный параметр. Передача по значению не означает то, что переданный параметр невозможно изменить внутри метода, которому передали этот параметр. Посмотрите состояние переменной c до и после conpoke... |
|
27.06.2005, 15:35 | #4 |
Участник
|
Контейнеры нельзя изменять вообще. Замените conPoke на с=conPoke
|
|
27.06.2005, 15:40 | #5 |
NavAx
|
А функции con... к чему? Для красоты прикручены?
Вообще, забавно - тип данных есть, а изменять его нельзя... По идее, он тогда const должен называться... Насчет замены. А если у меня в контейнере сто элементов? В цикле в новый копировать? Потому что если впрямую присвоить, скажем PHP код:
P.S. Богатая справка на сайте, не хуже, чем в Аксапте... Баннеропоказы/клики зарабатываем? |
|
27.06.2005, 15:44 | #6 |
Участник
|
Цитата:
А функции con... к чему?
Цитата:
Богатая справка на сайте, не хуже, чем в Аксапте... ))))
Баннеропоказы/клики зарабатываем? ) |
|
27.06.2005, 15:50 | #7 |
Участник
|
PHP код:
|
|
27.06.2005, 15:51 | #8 |
NavAx
|
Еще интересный эффект - создаем контейнер (by belougin)
PHP код:
Готово, Василий Иванович. |
|
27.06.2005, 15:53 | #9 |
NavAx
|
2 bagir.
Пробовал, результат монопенисуален. с2 становится read-only. Похоже, здесь какой-то глюк с распределением памяти/управлением объектами типа container.... |
|
27.06.2005, 15:54 | #10 |
Участник
|
еще есть Array, List, Set, временная таблица
|
|
27.06.2005, 15:56 | #11 |
Модератор
|
А хотелось-бы все-таки контейнер, раз уж такой тип есть.
|
|
27.06.2005, 16:00 | #12 |
NavAx
|
В общем говоря - баг налицо, о чем изначально и был пост.
Что можно сделать в обход - это само собой разумеется. |
|
27.06.2005, 16:01 | #13 |
Участник
|
ничего не понимаю
у меня Ax3.0SP3, всё работает нормально PHP код:
|
|
27.06.2005, 16:02 | #14 |
Участник
|
conins(c2,1,t+1); создает новый контейнер - копию со вставленным элементом и возвращает его. Если резщультат функции никуда не девать, ее использовать бессмысленно
PHP код:
|
|
27.06.2005, 16:11 | #16 |
NavAx
|
#&##@!!!
Блин, запарка косит наши ряды... Оно ж _возвращает_ изменённый контейнер, ёклмн... Сто лет контейнерами не баловался - и вот приехал. |
|
27.06.2005, 16:15 | #17 |
Участник
|
Понял, человек просто запутался, он думает, что контейнерные функции правят тот контейнер, который передаётся в параметрах. Наверное проглядел, что контейнерные функции возвращают новый контейнер (как бы изменённый старый).
|
|
27.06.2005, 16:35 | #18 |
Administrator
|
Собственно, речь об этом изначально и была.
container - тип примитивный! больше всего он похож на str. И он всегда передается по значению. Если вы в conins() передаете контейнер по значению, то получить измененный контейнер вы можете только как результат функции. Вспомните для примера функции strdel(), strins() и т.п.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
27.06.2005, 16:38 | #19 |
NavAx
|
Мля, ну всё, всё, запарили... началось тут чтение истин...
Не обратил внимание, что функция еще и возвращает что-то. |
|
27.06.2005, 17:43 | #20 |
Участник
|
PS "Тип передается по.." - это вообще не по-русски. Плохой перевод. Поэтому отчасти и воспринимается с трудом, о чем собственно речь.
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
gatesasbait: Quicksort on a container | 1 | |||
SysUsersOnlineHolder - баг в 3.0 | 0 | |||
Найти display методы | 12 | |||
axaptapedia: Container | 0 | |||
Dynamics AX Geek: Storing objects in a container | 0 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|