Язык программирования Euphoria | страница 17
С отрезками можно использовать сокращение $, то есть:
>s[2..$]
>s[5..$-2]
>s[$-5..$]
>s[$][1..floor($/2)] -- первая половина последнего элемента s
2.2.7 Сцепление рядов и атомов - операция &
Над любыми двумя объектами может быть произведена операция сцепления (конкатенации). Для этого служит оператор & - просто "и" в переводе на русский язык. Результатом операции является ряд, имеющий длину, равную сумме длин сцепленных объектов (здесь атомам как бы приписывается длина 1). То есть:
>{1, 2, 3} & 4 -- {1, 2, 3, 4}
>4 & 5 -- {4, 5}
>{{1, 1}, 2, 3} & {4, 5} -- {{1, 1}, 2, 3, 4, 5}
>x = {}
>y = {1, 2}
>y = y & x -- y всё ещё остается равным {1, 2}
Вы можете удалить элемент i любого ряда s, сцепив отрезки ряда до и после ненужного элемента i:
> s = s[1..i-1] & s[i+1..length(s)]
Этот приём работает, даже когда i равно 1 или length(s), так как s[1..0] является законным пустым отрезком, так же как и s[length(s)+1..length(s)].
2.2.8 Формирование ряда
Операция формирования ряда записывается с помощью фигурных скобок и запятых:
>{a, b, c, ... }
В ней участвует n операндов, где n равно 0 или более. В результате операции из величин элементов создается n-элементный ряд. То есть,
>x = {apple, orange*2, {1,2,3}, 99/4+foobar}
Операция формирования ряда выполняется в последнюю очередь, см. Порядок операций.
2.2.9 Другие операции на рядах
Для обозначения некоторых других важных операций, которые вы можете выполнять, используются английские слова, а не специальные символы, о которых шла речь ранее. Эти операции выполняются с помощью функций, встроенных в интерпретаторы ex.exe/exw.exe/exu, следовательно, они всегда под рукой, следовательно, они очень быстрые. Они детально описаны в документе Часть II - Библиотека подпрограмм, но очень важны для программирования на Euphoria, поэтому мы должны упомянуть о них здесь, прежде чем продолжить разговор о других вещах. Эти операции запускаются на исполнение так, как если бы они были подпрограммами, хотя на самом деле их воплощение значительно более эффективно, чем обычных подпрограмм.
Функция length(s) выдаёт вам значение текущей длины ряда s. Это число элементов в ряде s. Некоторые из этих элементов сами могут быть рядами, содержащими другие элементы, но наша функция даёт число элементов самого "верхнего" уровня, считая каждый ряд на этом уровне за единственный элемент. При попытке определения длины атома выдаётся сообщение об ошибке, то есть,