Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
 работа со списками  [new]
michka92
Member

Откуда:
Сообщений: 1
Доброй ночи, уважаемые знатоки.

Пытаюсь самостоятельно изучать Caché, но вникнуть в некоторые моменты одному непросто
Можете поможете разобраться.. вот понял если есть готовый список, что он выглядит както
Set color = $ListBuild("красный", "зеленый", "голубой")
а если постепенно заполнять список? например, в этот же добавить значение, еще один цвет?
я делаю так:
 set color = $ListBuild("красный", "зеленый", "голубой") 
  w "Начальный список:"
  w color,!
  set color = $ListBuild("красный", "зеленый", "голубой")_$LB("фиолетовый")
  set dl=$ListLength(color)
  w "Цвета:"
  w color,!,"Длина строки:",dl,!

у меня просто не отображает корректно вывод ,скорее всего неправильно чтото понял.. скрин подкрепляю

К сообщению приложен файл. Размер - 38Kb
25 дек 17, 22:46    [21061724]     Ответить | Цитировать Сообщить модератору
 Re: работа с списками  [new]
Ptn
Guest
>а если постепенно заполнять список? например, в этот же добавить значение, еще один цвет?

Списки можно объединять как строку. Вместо
set color = $ListBuild("красный", "зеленый", "голубой")_$LB("фиолетовый")

можно писать просто
set color = color_$LB("фиолетовый")


Другой вопрос что через простой write (w) списки не отображаются, так как являются бинарными строками, для "отладки" списки следует выводить через zwrite (zw)
26 дек 17, 07:32    [21061944]     Ответить | Цитировать Сообщить модератору
 Re: работа с списками  [new]
Аленочка
Member

Откуда: Владик
Сообщений: 2155
а если использовать преобразование к строке: w $LTS(color),!
как будет выводиться?
26 дек 17, 07:46    [21061971]     Ответить | Цитировать Сообщить модератору
 Re: работа с списками  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13065
Аленочка
а если использовать преобразование к строке: w $LTS(color),!
как будет выводиться?

Так

VERS>set color = $ListBuild("красный", "зеленый", "голубой")
 
VERS> w $LTS(color),!
красный,зеленый,голубой
26 дек 17, 08:30    [21062044]     Ответить | Цитировать Сообщить модератору
 Re: работа с списками  [new]
eduard93
Member

Откуда:
Сообщений: 158
>set color = $ListBuild("красный", "зеленый", "голубой")
>zw color
color=$lb("красный","зеленый","голубой")

>set $list(color, 7) = "синий"
>zw color
color=$lb("красный","зеленый","голубой",,,,"синий")
 
>set color = color _ $lb("белый")
>zw color
color=$lb("красный","зеленый","голубой",,,,"синий","белый")
26 дек 17, 17:26    [21064216]     Ответить | Цитировать Сообщить модератору
 Re: работа с списками  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 888
а еще есть обратная функция $LFS("красный,желтый,зеленый") и правое присваивание ( есть в примере выше ), можно использовать вместе с функцией $LL
26 дек 17, 20:59    [21064724]     Ответить | Цитировать Сообщить модератору
 Re: работа с списками  [new]
Ptn
Guest
Наверное стоит еще заметить что упомянутая функция $listtostring очень не любит NULL значений

На списке приведенном в пример eduard93

color=$lb("красный","зеленый","голубой",,,,"синий","белый")


получите ошибку <NULL VALUE>, ибо отсутствующий элемент списка не приравнивается пустой строке

Для примера вот что делает $listfromstring

zw $listfromstring("красный,зеленый,голубой,,,,синий,белый")
$lb("красный","зеленый","голубой","","","","синий","белый")
27 дек 17, 09:25    [21065536]     Ответить | Цитировать Сообщить модератору
 Re: работа с списками  [new]
Александр Коблов
Member

Откуда: Краснодар, Москва
Сообщений: 240
Ptn,

третий параметр в $ListToString как раз отвечает за обработку NULL-значений:

USER>set color=$lb("красный","зеленый","голубой",,,,"синий","белый")
 
USER>write $listtostring(color,",",1)
красный,зеленый,голубой,,,,синий,белый
USER>write $listtostring(color,",",0)
 
WRITE $LISTTOSTRING(color,",",0)
^
<NULL VALUE>
27 дек 17, 10:21    [21065685]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить