ВУЗ:
Составители:
Рубрика:
32
ValueType=integer;
DataType = record
Key: KeyType;
Value: ValueType;
end;
Сам ассоциативный массив определим в модуле с именем AssocArraySI.
Если потребуется создать ассоциативный массив с другим типом индексов или
значений, то к модулю, в котором он определен, достаточно будет подключить
другой модуль, реализующий список пар.
В закрытой секции интерфейса класса содержится список пар Pairs, а так
-
же внешний итератор it по этому списку и два вспомогательных метода
TryFind и Add. Процедура TryFind(Key) пытается найти в списке пар пару с
ключом Key, используя итератор it. Если поиск не увенчался успехом, то
it.Eol возвратит истину (пройден весь список и данные не найдены), если же
поиск успешен, то it.Data
представляет найденную пару. Процедура
Add(Key,Value) добавляет пару (Key,Value) в конец списка и устанавлива-
ет итератор на эту пару.
Центральным в открытом интерфейсе класса «Ассоциативный массив» явля-
ется индексное свойство Items, позволяющее использовать для объектов этого
класса синтаксис массива. Его методы доступа на чтение и запись GetItem и
SetItem используют для своей
реализации методы TryFind и Add, а также
итератор it. Метод GetItem(Key) ищет пару с ключом Key, и если такая пара
не найдена, то добавляет в конец списка пару (Key,0). После этого в любом
случае возвращается значение, соответствующее этому ключу. Таким образом,
если значение ключа встретилось впервые, то возвращается 0, иначе возвращается
соответствующее данному ключу значение. Метод SetItem(Key,Value) ищет
пару с ключом Key и если такая пара не найдена, то добавляет в конец списка па-
ру (Key,Value), в противном случае второму элементу пары с ключом Key
присваивается значение Value. Таким образом, в итоге работы метода SetItem
в списке пар оказывается пара (Key,Value).
Приведем
интерфейс и реализацию класса AssocArray, помещенного в мо-
дуль AssocArraySI.
unit AssocArraySI;
interface
uses PairsSIList;
type
AssocArray=class
private
Pairs: List;
it: ListIterator;
Страницы
- « первая
- ‹ предыдущая
- …
- 28
- 29
- 30
- 31
- 32
- …
- следующая ›
- последняя »