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


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Функции для обработки списков





В рассмотренных ранее в этой главе примерах мы познакомились с тем, как создать список, сохранить его в качестве значения переменной, организовать итерации по всем элементам списка и получить доступ к индивидуальному элементу списка. В этом разделе вы познакомитесь еще с несколькими функциями, которые расширяют набор возможностей для работы со списками.

ФУНКЦИЯ REVERSE

Функция reverse реверсирует элементы списка. Она имеет следующий формат:

@new_list = reverse(@List);

Функция reverse реверсирует список и возвращает новый результирующий список. Следующий пример иллюстрирует использование функции reverse:

@list = reverse(1..5); # Результат 5,4,3,2,1 @list = reverse(@list); # Результат 1,2,3,4,5

ФУНКЦИЯ SORT

Функция sort сортирует элементы списка. Она имеет следующий формат:

@new_list = sort(@List);

Или

@new_list = sort(Subroutine @List);

Или

@new_list = sort(blockstatement @List);

Функция sort размещает элементы в списке, упорядочивая их в соответствии с порядковыми номерами символов в таблице ASCII-кодов. Так же как и функция reverse, функция sort возвращает в качестве значения новый список и не воздействует на исходный список. Следующий пример иллюстрирует использование функции sort:

@list = sort (1,5,2,3,4); # Результат 1,2,3,4,5 @list = sort(1,2,10); # 1,10,2 сортировка в ASCII

В подпрограмме или блоке можно изменять упорядочение, в соответствии с которым выполняется сортировка. Следующий пример иллюстрирует использование функции sort.

@list = sort({$a <=> $b} (2,1,10)); # @list 1,2,10 @list = sort({$b <=> $a}) (2,1,10); # @list 10,2,1 Sub mycomp { $b <=> $a } @list = sort(mycomp (2,1,10)); # @list 10,2,1

ФУНКЦИИ РАБОТЫ С МАССИВАМИ

Как известно, массив представляет собой структуру данных, содержащую одно или несколько значений величин одного типа, например, 100 имен студентов. Perl содержит несколько встроенных функций, которые помогают работать с элементами массива. В следующих разделах рассматривается несколько основных функций для обработки массивов.

ФУНКЦИИ PUSH И POP

Скрипты языка Perl используют фикции push и pop для того, чтобы добавлять и удалять элементы с конца массива. Иными словами, функции push и pop позволяют скриптам выполнять операции со стеком по принципу: последним вошел, первым вышел. Функция push имеет следующий формат:

Push(@ARRAY, LIST);

Следующий фрагмент иллюстрирует использование функции push:

@list = (); Push(@list,10,20); # @list теперь (10,20) Push(@list,1..3); # @list теперь (10,20,1,2,3)

В противоположность этому функция pop удаляет элемент, который был вставлен в стек последним и возвращает значение этого элемента. Функция pop имеет следующий формат:

$value = pop(@ARRAY);

Следующий фрагмент программы иллюстрирует использование функции pop:

# Возьмём @list из предыдущего примера Print pop(@list); # Выведет 3 Print pop(@list); # Выведет 2 # Теперь @list (10,20)

ФУНКЦИЯ SHIFT

Функция shift удаляет и возвращает элемент из начала массива. Эта функция аналогична функции pop с тем только отличием, что работает от начала массива по принципу FIFO (<первым вошел, первым вышел>). Функция shift имеет следующий формат:

$value = shift(@ARRAY);

Следующий фрагмент программы иллюстрирует использование функции shift:

# Возьмём @list из предыдущего примера

Print shift(@list); # Выведет 10 Print shift(@list); # Выведет 20 # Теперь @list ()

ФУНКЦИЯ UNSHIFT

Функция unshift добавляет один или больше элементов к началу массива. Она имеет следующий код:

Unshift(@Array, List);

Следующий фрагмент программы иллюстрирует использование функции unshift:

# @list = () Unshift(@list,5,10,20); # @list (5,10,20) Unshift(@list, 1..3); # @list (1,2,3,5,10,20)

ФУНКЦИЯ SPLICE

Скрипты языка Perl используют функцию splice для того, чтобы извлекать элементы из списка, заменяя их элементами другого списка. Она имеет следующий формат:

Splice(@Array, Offset[, Count[, List]]);

Функция splice извлекает указанное число элементов {Count)из массива (@Аrraу), начиная с элемента, на который указывает величина сдвига (Offset), и заменяет элементы элементами другого списка (List). Если в вызове функции не указан параметр Count, функция извлекает элементы до самого конца массива. Если в вызове функции не указан список, элементами которого замещаются исходные элементы, то функция не добавляет никаких элементов к первоначальному списку. Следующее выражение иллюстрирует использование функции splice:


@list = 1..10; Splice(@list,1,8,5,6); # @list = (1,5,6,10)

ФУНКЦИЯ SCALAR

Функция scalar определяет число элементов в списке. Она имеет следующий формат:

Rsult = scalar(List);

Обычно скрипты языка Perl не нуждаются в использовании функции scalar применительно к массивам, потому что когда скрипт обращается к массиву, записывая его в скалярном контексте, то он получает в качестве возвращаемой величины число элементов массива. Тем не менее, скрипты могут использовать функцию scalar в случаях, когда контекст является неоднозначным или если список не является массивом. Следующее выражение иллюстрирует использование функции scalar.

@list = 1..10; Print scalar(@list); # Выведет размер @list

ФУНКЦИЯ GREP

Функция grep фильтрует элементы списка, для которых заданное выражение принимает значение <ложно>. Она имеет следующий формат:

@list = grep(Expression, List);

Функция grep просматривает элементы списка, подставляя их вкачестве аргумента в заданное выражение. Функция grep присваивает текущее выражение элемента списка переменной $_ и вычисляет заданное выражение. Если полученное выражение является истинным, то функция grep добавляет этот элемент к результирующему списку. Следующий фрагмент программы иллюстрирует использование функции grep:

@list = grep($_ & 1, 1..10); # @list (1,3,5,7,9) @list = ('a', '' 'b'); # @list ('a',' ','b') @list = grep($_ eq '', @list); # @list ('a','b')

Примечание: Если выражение, модифицирует переменную. $_, то исходный список также будет модифицирован.

Функции обработки ассоциативных массивов

Как известно, ассоциативные массивы - это такие массивы, у которых индексом является не числовая величина, а, например, имя. В языке Perl имеется несколько встроенных функций, которые упрощают обработку скриптами ассоциативных массивов.

ФУНКЦИЯ KEYS

Функция keys возвращает значения ключей, которые отвечают ассоциативному массиву. Она имеет следующий формат:

@key_list = keys(%Array);

Функция keys возвращает массив ключей в виде регулярного списка. Следующий фрагмент программы иллюстрирует использование функции keys:

$ages{'Bob'} = 25; $ages{'Mary'} = 30; $ages{'Zack'} = 15; @list = keys(%ages); # @list будет 'Zack', 'Bob', 'Mary' @list = sort keys %ages # @ list 'Bob', 'Mary', 'Zack' For $key (sort keys %ages) { Print "$key is $ages{$key}\n" }

ФУНКЦИЯ VALUES

Функция values возвращает обычный массив, состоящий из значений ассоциативного массива. Она имеет следующий формат:

@value_list = values(%Array)

Функция values возвращает массив значений ассоциативного массива в виде регулярного списка. Следующий фрагмент программы иллюстрирует использование функции values:

# Используем значения из предыдущего примера %ages = ('Bob', 25, 'Mary', 30, 'Zack', 15); @list = sort values %ages; # @list (15, 25, 30) @list = %ages; # @list ('Zack', 15, 'Bob', 25, 'Mary', 30)

ФУНКЦИЯ EACH

Функция each осуществляет итерации элементов в ассоциативном массиве. Она имеет следующий формат:

@key_values = each(%Array);

Всякий раз, когда скрипт вызывает функцию each, она возвращает список из двух компонент, которые содержат пару ключ-значение. Когда функция достигает конца списка, она возвращает пустой список. При следующем вызове функции процесс итерации начнется сначала. Следующий фрагмент программы иллюстрирует использование функции each:

# Используем значения из предыдущего примера %ages = ('Bob', 25, 'Mary', 30, 'Zack', 15); While (($name, $age) = each %ages) { # Выведем ages Print "$key is $ages{$key}\n"; }

ФУНКЦИЯ DELETE

Функция delete удаляет элементы ассоциативного массива. Она имеет следующий формат:

Delete $Array{Key}

Следующая инструкция использует функцию delete для того, чтобы удалить элемент, отвечающий ключу Bob из ассоциативного массива $Employees:

Delete $Employees{'Bob'}

 








Date: 2016-07-25; view: 476; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию