Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Write list2 ; напечатает brownblack






Функция $List совместно с оператором Set позволяет заменять элементы списка, добавлять новые элементы к пустым спискам. Элемент списка сам может быть списком.

Можно вкладывать функции $List для извлечения подсписков. Например:

> Set L1=$LISTBUILD(" RED", " BLUE", " GREEN")

> Set $List(L1, 2)= " hhhh"; вставить hhhh на место второго элемента

> Write $List(L1, 2)

Hhhh

> Set $List(L1, 4)= " abcd"; добавить 4-ый элемент в список

Один или несколько элементов списка могут выделяться с помощью функции работы со списками $LIst.

При этом list представляет собой созданный с помощью $ListBuild список, в противном случае возникает сообщение об ошибке < list>. В одноаргументной форме выделяется первый элемент списка. Position – это начальная позиция, начиная с которой происходит выделение. Если конечная позиция (end) не задана, выделяется один элемент списка, который далее интерпретируется как строка символов (конечно, если сам он не является подсписком). Если позиция end задана, выделяется по меньшей мере один элемент списка, интерпретируемый кроме того, как список!

В этом отношении, если список L1 определен как {красный, зеленый, голубой}, то:

$LIst(L1, 2) // соответствует строке символов " зеленый"

$LIst(L1, 2, 2) // соответствует списку {зеленый}

position и end могут иметь значение -1, представляющее собой указание на последнюю позицию списка (ее можно было получить также из выражения $ListLength(list)).

Следовательно, с помощью вызова «Set x = $List(L1, 2, -1)» получают список, состоящий из {зеленый, голубой}.

Если position равен 0, имеются две возможности:

$LIst(L1, 0) // сообщение об ошибке < NULL VALUE>

$LIst(L1, 0, 2) // соответствует вызову $LIst(L1, 1, 2)

Если position меньше -1, получают сообщение об ошибке < RANGE>. Если значение end меньше, чем position, возвращается пустая строка. Если position больше, чем длина списка (и позиция end не указана), результатом является пустой список, то есть {}.

Если в двухаргументной форме сослаться на неопределенный элемент списка, будет выдана ошибка < null value>. В трехаргументной форме эта ошибка не возникает, поскольку в качестве результата всегда получается список.

Set L3 = $ListBuild(" красный", " зеленый",, " голубой")

// ошибка < NULL VALUE>, третий элемент не определен

Write $LIst(L3, 3)

// нет сообщения об ошибке, результатом является пустой список

Write $LIst(L3, 3, 3)

Подобно $Piece, а также $Extract, имеется так называемая левосторонняя форма $LIst, которую можно использовать для изменения одного или нескольких элементов списка. Например, ее можно применить для создания отсутствующего третьего элемента в списке L3:

Set $LIst(LЗ, 3) = " желтый"

Результатом является список {красный, зеленый, желтый, голубой}. В развитие этой возможности в список можно ввести подсписки, поместив в правой части выражения вызов функций $ListBuild или $LIst:

Set $LIst(x, pos) = $ListBuild(list)

Set $LIst(x, pos) = $LIst(list, pos, end)

Следующая списковая функция – $ListGet – это расширение $LIst. $ListGet идентична одноаргументной и двухаргументной формам $LIst, за исключением того, что не порождает ошибки < null value>. С помощью функции $ListGet можно выделить определенный элемент из списка. Если этот элемент списка не определен, то в виде значения по умолчанию возвращается третий аргумент, если он не задан – пустая строка:

> Write $ListGet(L3, 3) // двухаргументная форма

(пустая строка)

> Write $ListGet(L3, 3, " васильковый")






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.