Функции для работы со списками
Функция $ListBuild
Позволяет создать список.
Синтаксис:
$LISTBUILD(element,...)
$LB(element,...)
Где element - это элемент списка, строка символов в кавычках. Разделитель элементов списка – запятая.
Например, создание списка X:
SET X=$LISTBUILD("Red","Blue","Green")
Set L1 = $ListBuild("красный", "зеленый", "голубой")
Приведем еще два примера:
Set list = "Becнa/Лeто/Oceнь/3имa"
Set address = "Петров И.П.^Калинин^192022^ул. Мира, 21, 10:65745 / 53221"
Второй пример показывает многие нюансы. Во-первых, строка символов, понимаемая как запись, представлена в форме списка с символом ^ в качестве разделителя. Далее, некоторые поля (иными словами, элементы списка) содержат подсписки, имеющие в свою очередь другие разделители, как показывает последний элемент списка, содержащий два телефонных номера.
Для управления этими списками подходят три основных элемента языка (см. также определения этих элементов языка в таблице):
§ двухаргументная форма функции $Length для определения числа элементов в списке
§ функция $Piece для выделения отдельных элементов списка
§ особая форма команды Set (левосторонняя форма) для создания или замены отдельных элементов списка.
>Write $Length(list, "/")
>Write $Piece(address, "^", 4)
Ул. Мира, 21, 10
>Set $Piece(address, "^", 2) = "Тверь"
>Write address
Петров И.П.^Тверь^192022^ул. Мира, 21, 10^65745 / 53221
$Length возвращает «длину» списка, когда в качестве второго аргумента указывается соответствующий разделитель списка.
$Piece возвращает один (или несколько) элементов списка, причем разделитель задается как второй аргумент.
Третий пример весьма содержателен, ибо с помощью этой особой формы команды Set могут быть заменены элементы списка. Здесь второй элемент списка заменяется новым, стоящим в правой части операции присваивания.
Пример.
Далее используются списки L1-L5, описанные в начале данного раздела. С помощью $ListBuild создаются списки.
>Set L1 = $ListBuild("красный", "зеленый", "голубой")
L1 = {красный, зеленый, голубой}
>Set L2 = $ListBuild()
пустой список L2 = {}
>Set L3 = $ListBuild("красный", "зеленый", , "голубой")
L3 = {красный, зеленый, , голубой}
>Set L4 = $ListBuild("красный", "зеленый", "", "голубой")
L4 = {красный, зеленый, "", голубой}
>Set L5 = $ListBuild("красный", $ListBuild("светлокрасный",
"оранжевый", "вишневокрасный"), "зеленый",
"голубой")
Аргументы $ListBuild могут представлять собой любые выражения:
Set list = $ListBuild(2 * x1, 3 * x2)
С помощью этой команды создается список с двумя числовыми элементами.
Kill var Set list = $ListBuild(var, 1)
Ссылка на неопределенную переменную в аргументе функции $ListBuild не приводит к ошибке. В примере создается список, первый элемент которого не определен, а второй имеет значение 1.
Пример. Списки могут соединяться с помощью оператора конкатенации. Именно поэтому выражение
$ListBuild("a", "b")_$ListBuild("c")
создает список с тремя элементами "а", "b" и "с". Заметим, что выражения
$ListBuild("a", "b")
$ListBuild("a", "b")_$ListBuild()
$ListBuild("a", "b")_$ListBuild("")
представляют собой три различных списка. Первый содержит два элемента, второй три, причем третий не определен, в то время как третий список также содержит три элемента, третий из которых — пустая строка.
Как много элементов содержит список? На этот вопрос отвечает функция $ListLength.
>Write $ListLength(L1) // выводит 3
>Write $ListLength(L2) // выводит 1
>Write $ListLength(L3) // выводит 4
>Write $ListLength(L4) // выводит 4
>Write $ListLength(L5) // выводит 4
$ListLength не распознает, является ли сам элемент списком, а лишь считает число первичных элементов списка. Таким образом, $ListLength не распознает элементы во вложенных списках.
Если в качестве аргумента используется любая строка символов, а не список, созданный $ListBuild, появляется сообщение об ошибке <list>.
Функция $ListLength
Возвращает количество элементов списка. Синтаксис:
$LISTLENGTH(list)
$LL(list)
Где list это список.
Например:
WRITE $LISTLENGTH($LISTBUILD("Red","Blue","Green")); вернет 3
WRITE $LISTLENGTH("") ; вернет 0
Функция $List
Извлекает один или несколько элементов списка.
Синтаксис:
$LIST(list,position,end)
$LI(list,position,end)
Где list это список, Position – задает начальную позицию элементов в списке, End –конечную позицию.
Извлекаемые элементы зависят от количества параметров:
• $LIST(list) возвращает первый элемент списка.
• $LIST(list,position) возвращает элемент в указанной позиции.
• $LIST(list,position,end) возвращает подсписок, содержащий элементы списка, начиная с позиции position и заканчивая end.
Например:
WRITE $LIST($LISTBUILD("RED","BLUE","GREEN")) ; напечатает RED
WRITE $LIST($LISTBUILD("RED","BLUE","GREEN"),1) ; напечатает RED
SET X=$LISTBUILD("Red","Blue","Green")
WRITE $LIST(X,2) ; напечатает Blue
SET X=$LISTBUILD("Green ","White ","Brown ","Black ")
SET LIST2=$LIST(X,3,-1)
Дата добавления: 2016-01-20; просмотров: 623;