Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Передача списка в метод / 21 сообщений из 21, страница 1 из 1
04.02.2011, 17:10
    #37098434
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
Значит торможу на следующей ситуации:
есть список вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
N LIST
s LIST=""
s LIST(1)="some val1"
s LIST(2)="some val2"
s LIST(3)="some val3"
s LIST(4)="some val4"
d ^SOMEOPERATION(LIST)
хочу чтобы в программе SOMEOPERATION была возможность прочитать значения LIST(1) LIST(2) и т.д. подскажите как ?
...
Рейтинг: 0 / 0
04.02.2011, 17:17
    #37098453
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
AndrewQwerЗначит торможу на следующей ситуации:
есть список вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
N LIST
s LIST=""
s LIST(1)="some val1"
s LIST(2)="some val2"
s LIST(3)="some val3"
s LIST(4)="some val4"
d ^SOMEOPERATION(LIST)
хочу чтобы в программе SOMEOPERATION была возможность прочитать значения LIST(1) LIST(2) и т.д. подскажите как ?
нужно передать через точку
Код: plaintext
1.
d ^SOMEOPERATION(.LIST)
...
Рейтинг: 0 / 0
04.02.2011, 21:55
    #37098820
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
а если появиться необходимость (а она скорее всего появиться) запускать через j ^SOMEOPERATION(LIST) Через точку в таком случае вроде не прокатывает
...
Рейтинг: 0 / 0
04.02.2011, 22:10
    #37098839
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
AndrewQwerа если появиться необходимость (а она скорее всего появиться) запускать через j ^SOMEOPERATION(LIST) Через точку в таком случае вроде не прокатывает
Более того - и не должно, так определено в job, но обычно на этот случай есть передача указанных локальных переменных для команды job, это уже не стандартизированно, надо смотреть описание job на ту М систему которой пользуетесь.
...
Рейтинг: 0 / 0
04.02.2011, 22:24
    #37098848
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
Генерируйте временные глобал и передавайте его имя.
Если вызывающи и вызываемый методы находятся в одном процессе (не job), то можно использовать process-private global.
(Кстати, от того, что вы глобал назвали списком, списком он не стал. Так что правильнее назвать тему "передача глобала в метод")
...
Рейтинг: 0 / 0
05.02.2011, 09:41
    #37099111
Turk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
Блок А.Н.Кстати, от того, что вы глобал назвали списком, списком он не стал. Так что правильнее назвать тему "передача глобала в метод"
Все правильно с названием темы (разве что указанную структуру лучше назвать не списком, а массивом). Глобал бессмысленно передавать в метод по определению, в крайнем случае передается имя.

AndrewQwerа если появиться необходимость (а она скорее всего появиться) запускать через j ^SOMEOPERATION(LIST) Через точку в таком случае вроде не прокатывает
Можно преобразовать вашу структуру в список ($listbuild) и передавать его. Но этот способ работает только для небольших структур (объем $listbuild-а ограничен 32Кб, если не включать поддержку длинных строк).
...
Рейтинг: 0 / 0
05.02.2011, 13:08
    #37099249
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
AndrewQwer , что вообще находится в том массиве, что его весь (!) хочется передавать парпметром?
...
Рейтинг: 0 / 0
05.02.2011, 13:10
    #37099251
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
TurkМожно преобразовать вашу структуру в список ($listbuild) и передавать его. Но этот способ работает только для небольших структур (объем $listbuild-а ограничен 32Кб, если не включать поддержку длинных строк).
У AndrewQwer уже используется локальная переменная - т.е. ограничение на 32КБ работает. Т.о. можно смело использовать листбилд.
...
Рейтинг: 0 / 0
07.02.2011, 09:46
    #37101477
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
krvsa AndrewQwer , что вообще находится в том массиве, что его весь (!) хочется передавать парпметром?
скажем список людей, сформированных по некому признаку. В зависимости от значения этого признака список должен передаваться в различные программы :) как-то так.
...
Рейтинг: 0 / 0
07.02.2011, 09:47
    #37101480
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
Блок А.Н.Генерируйте временные глобал и передавайте его имя.
Если вызывающи и вызываемый методы находятся в одном процессе (не job), то можно использовать process-private global.
(Кстати, от того, что вы глобал назвали списком, списком он не стал. Так что правильнее назвать тему "передача глобала в метод")
Насчет временного глобала подумывал, оставлю на крайний случай.
...
Рейтинг: 0 / 0
07.02.2011, 09:48
    #37101483
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
TurkБлок А.Н.Кстати, от того, что вы глобал назвали списком, списком он не стал. Так что правильнее назвать тему "передача глобала в метод"
Все правильно с названием темы (разве что указанную структуру лучше назвать не списком, а массивом). Глобал бессмысленно передавать в метод по определению, в крайнем случае передается имя.

AndrewQwerа если появиться необходимость (а она скорее всего появиться) запускать через j ^SOMEOPERATION(LIST) Через точку в таком случае вроде не прокатывает
Можно преобразовать вашу структуру в список ($listbuild) и передавать его. Но этот способ работает только для небольших структур (объем $listbuild-а ограничен 32Кб, если не включать поддержку длинных строк).
да, про $listbuild забыл :) нада попробывать, спасибо
...
Рейтинг: 0 / 0
07.02.2011, 09:49
    #37101487
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
AndrewQwerскажем список людей, сформированных по некому признаку.
Тогда его однозначно в глобал! А имя глобала передать параметром в процедурку.
...
Рейтинг: 0 / 0
07.02.2011, 09:58
    #37101503
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
krvsaAndrewQwerскажем список людей, сформированных по некому признаку.
Тогда его однозначно в глобал! А имя глобала передать параметром в процедурку.
хорошо, вот подумал а если LIST(N)=<обьект класса Person>. Получиться его прчоитать потом из глобала?
...
Рейтинг: 0 / 0
07.02.2011, 10:00
    #37101506
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
AndrewQwerа если LIST(N)=<обьект класса Person>. Получиться его прчоитать потом из глобала?
Нет.
Ореф пока должен быть именно локальной переменной. Да и в джоб ореф не передать...
...
Рейтинг: 0 / 0
07.02.2011, 10:08
    #37101527
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
krvsaAndrewQwerа если LIST(N)=<обьект класса Person>. Получиться его прчоитать потом из глобала?
Нет.
Ореф пока должен быть именно локальной переменной. Да и в джоб ореф не передать...
яснО, это все меняеть )
...
Рейтинг: 0 / 0
07.02.2011, 10:33
    #37101582
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
AndrewQwer , как вариант ИДшки нужные собрать и передать... Этого добра даже в листбилд много можно напихать.

Но опять вопрос - зачем?
...
Рейтинг: 0 / 0
07.02.2011, 10:34
    #37101584
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
krvsa AndrewQwer , как вариант ИДшки нужные собрать и передать... Этого добра даже в листбилд много можно напихать.

Но опять вопрос - зачем?
не, не нада, в моем случае можно обойтись без передачи классов =)
...
Рейтинг: 0 / 0
11.02.2011, 17:34
    #37112133
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
AndrewQwer ,

Используйте класс %ArrayOfDataTypes (или %ListOfDataTypes , если количество элементов невелико), например:

  new arr
  set arr=##class(%ArrayOfDataTypes).%New()
  do arr.SetAt("some val1",1)
  do arr.SetAt("some val10",10)
  do arr.SetAt("some val15000",15000)
  do arr.SetAt("some val500000000",500000000)
  
  d SOMEOPERATION(arr)  
SOMEOPERATION(l)
  {
    m LIST=l.Data
    zw LIST
  }
...
Рейтинг: 0 / 0
12.02.2011, 09:23
    #37112796
Turk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
servit AndrewQwer ,
Используйте класс %ArrayOfDataTypes (или %ListOfDataTypes , если количество элементов невелико)
AndrewQwerа если появиться необходимость (а она скорее всего появиться) запускать через j ^SOMEOPERATION(LIST)
...
Рейтинг: 0 / 0
12.02.2011, 19:27
    #37113256
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
Turk ,

Тогда необходимо сериализовывать/десериализовывать объект, например:

  new

  kill ^LIST

  set arr=##class(%ArrayOfDataTypes).%New()
  do arr.SetAt("some val1","1")
  do arr.SetAt("some val10",10)
  do arr.SetAt("some val15000",15000)
  do arr.SetAt("some val500000000",500000000)
  
  do arr.%SerializeObject(.serial)
  job SOMEOPERATION(serial)

  hang 0.1

  zwrite ^LIST

SOMEOPERATION(serial)
  new tmp
  set tmp=##class(%ArrayOfDataTypes).%Open(serial)
  merge ^LIST=tmp.Data
  quit
...
Рейтинг: 0 / 0
15.02.2011, 08:58
    #37116249
AndrewQwer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача списка в метод
servit Turk ,

Тогда необходимо сериализовывать/десериализовывать объект, например:

  new

  kill ^LIST

  set arr=##class(%ArrayOfDataTypes).%New()
  do arr.SetAt("some val1","1")
  do arr.SetAt("some val10",10)
  do arr.SetAt("some val15000",15000)
  do arr.SetAt("some val500000000",500000000)
  
  do arr.%SerializeObject(.serial)
  job SOMEOPERATION(serial)

  hang 0.1

  zwrite ^LIST

SOMEOPERATION(serial)
  new tmp
  set tmp=##class(%ArrayOfDataTypes).%Open(serial)
  merge ^LIST=tmp.Data
  quit
Спасибо за еще 1 метод, но через listbuild пока проще. возможно в других ситуациях ваш способ будет удобнее
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Передача списка в метод / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]