Programming Taskbook 0


Download 1.62 Mb.
Pdf ko'rish
bet55/71
Sana21.06.2023
Hajmi1.62 Mb.
#1644761
TuriУчебное пособие
1   ...   51   52   53   54   55   56   57   58   ...   71
Bog'liq
Abramyan-Pascal2016-1

Экспортирование
Методы sequence of T
 
ToArray: array of T 


Глава 4. Запросы 
89 
ToList: List 
ToDictionary(keySel: T -> TKey): Dictionary 
ToDictionary(keySel: T -> TKey; valueSel: T -> TVal):
Dictionary 
ToLookup(keySel: T -> TKey): ILookup 
ToLookup(keySel: T -> TKey; valueSel: T -> TVal):
ILookup 
* ToLinkedList: LinkedList 
* ToHashSet: HashSet 
* ToSortedSet: SortedSet 
С применением перечисленных запросов последовательность sequence 
of T может быть преобразована в следующие структуры данных: 
динамический массив array of T,
список на базе массива List,
словарь Dictionary или Dictionary
таблица просмотра ILookup или ILookup,
двусвязный список LinkedList
множество на базе хеш-таблицы HashSet,
отсортированное множество SortedSet.
С динамическими массивами мы уже знакомы; остальные структуры 
(кроме таблицы просмотра) рассматриваются в следующем выпуске насто-
ящей серии — см. [1, гл. 2–4]. Таблица просмотра редко создается в про-
граммах в явном виде; она используется во внутренней реализации запро-
сов объединения (см. п. 4.4) для повышения их эффективности. 
Для большинства экспортирующих запросов параметры не требуются. 
Исключение составляют запросы для преобразования в словарь и таблицу 
просмотра. Это объясняется тем, что данные структуры связывают с каж-
дым своим элементом особую характеристику — ключ, и поэтому при ука-
занном преобразовании необходимо определить лямбда-выражение keySel 
(селектор ключа), позволяющее по элементу исходной последовательности 
получить связанный с ним ключ (при создании словаря необходимо, чтобы 
все элементы последовательности имели уникальные ключи; при создании 
таблицы просмотра ключи элементов могут совпадать). При создании сло-
варя или таблицы просмотра можно дополнительно указать лямбда-выра-
жение valueSel (селектор значения) которое будет преобразовывать эле-
мент исходной последовательности перед его добавлением в словарь или 
таблицу просмотра в качестве значения, т. е. второго элемента пары 
«ключ–значение». 
Вместо любого запроса экспортирования, не имеющего параметров
можно использовать так называемую короткую функцию, выполняющую 


90 
аналогичное преобразование (эпитет «короткая» объясняется краткостью 
имен этих функций): 
function Arr(a: sequence of T): array of T 
function Lst(a: sequence of T): List 
function LLst(a: sequence of T): LinkedList 
function HSet(a: sequence of T): HashSet 
function SSet(a: sequence of T): SortedSet 
Удобство коротких функций заключается в том, что в качестве их па-
раметров можно указывать не только последовательность, но и любое ко-
личество параметров типа T. К этой категории можно отнести и функцию 
Seq для генерации последовательности, которая нами уже неоднократно 
использовалась. Имеется также короткая функция Dict для генерации сло-
варя, но она требует использования параметров специального типа. Для 
генерации элементов словаря (пар «ключ–значение») предназначена ко-
роткая функция KV. Обе эти функции описываются в [1, п. 4.2]. 
Нам осталось рассмотреть немногочисленную группу вспомогатель-
ных запросов.

Download 1.62 Mb.

Do'stlaringiz bilan baham:
1   ...   51   52   53   54   55   56   57   58   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling