Книга: Язык программирования Euphoria. Справочное руководство

2.2.9 Другие операции на рядах

2.2.9 Другие операции на рядах

Для обозначения некоторых других важных операций, которые вы можете выполнять, используются английские слова, а не специальные символы, о которых шла речь ранее. Эти операции выполняются с помощью функций, встроенных в интерпретаторы ex.exe/exw.exe/exu, следовательно, они всегда под рукой, следовательно, они очень быстрые. Они детально описаны в документе Часть II - Библиотека подпрограмм, но очень важны для программирования на Euphoria, поэтому мы должны упомянуть о них здесь, прежде чем продолжить разговор о других вещах. Эти операции запускаются на исполнение так, как если бы они были подпрограммами, хотя на самом деле их воплощение значительно более эффективно, чем обычных подпрограмм.

Функция length(s) выдаёт вам значение текущей длины ряда s. Это число элементов в ряде s. Некоторые из этих элементов сами могут быть рядами, содержащими другие элементы, но наша функция даёт число элементов самого "верхнего" уровня, считая каждый ряд на этом уровне за единственный элемент. При попытке определения длины атома выдаётся сообщение об ошибке, то есть,

length({5,6,7}) -- 3
length({1, {5,5,5}, 2, 3}) -- 4 (не 6!)
length({}) -- 0
length(5) -- ОШИБКА!

Функция repeat(item, count) выдает ряд, который состоит из элементов 'item', повторенных 'count' раз, то есть,

repeat(0, 100) -- {0,0,0,...,0} т.е. 100 нулей
repeat("Hello", 3) -- {"Hello", "Hello", "Hello"}
repeat(99,0) -- {}

Элемент, подлежащий повторению, может быть любым атомом или рядом.

Функция append(s, item) выдаёт новый ряд, добавляя элемент 'item' после конца ряда 's'. Функция prepend(s, item) выдаёт новый ряд, прибавляя элемент 'item' перед началом ряда 's', то есть,

append({1,2,3}, 4) -- {1,2,3,4}
prepend({1,2,3}, 4) -- {4,1,2,3}
append({1,2,3}, {5,5,5}) -- {1,2,3,{5,5,5}}
prepend({}, 9) -- {9}
append({}, 9) -- {9}

Длина нового ряда всегда на 1 больше, чем длина исходного ряда. Присоединяемый элемент может быть любым атомом или рядом.

Эти две встроенные функции, append() и prepend(), в чём-то похожи на оператор сцепления, &, но имеется и вполне ясное отличие, то есть,

-- присоединение ряда отличается
append({1,2,3}, {5,5,5}) -- {1,2,3,{5,5,5}}
{1,2,3} & {5,5,5} -- {1,2,3,5,5,5}
-- присоединение атома идентично
append({1,2,3}, 5) -- {1,2,3,5}
{1,2,3} & 5 -- {1,2,3,5}

Оглавление книги


Генерация: 1.108. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз