NewMap
NewMap name.<type>([Slots])
Описание
NewMap позволяет объявить новую Хеш-карту, также известную как Ассоциативный массив. Она позволяет осуществлять быстрый доступ к элементу, на основе ключа. Каждый ключ в хеш-карте уникален, это значит, что она не может содержать два различных элемента с одним и тем же ключом. Нет никаких ограничений по количеству элементов, таким образом в хеш-карте может быть столько элементов, сколько необходимо. Хеш-карта может иметь стандартный или структурированный тип. Просмотреть все команды для управления хеш-картами можно в библиотеке Map.
При использовании нового ключа, в хеш-карту автоматически добавляется новый элемент. Если другой элемент с тем же ключом уже присутствует в хеш-карте, то он будет заменен на новый. После того как элемент был создан или к нему был произведён доступ, он становится текущим элементом карты, и доступ к этому элементу может быть выполнен без указания ключа. Это полезно при использовании структурированной хеш-карты, так как для доступа к различным полям структуры, поиск по этому пункту уже не будет производится
Хеш-карты по умолчанию являются локальными. Это означает, что должны использоваться команды Global или Shared если объявленная хеш-карта, будет использоваться в процедурах. Также можно сделать хеш-карту параметром в процедуре, при помощи ключевого слова Map.
Для быстрого обмена содержимого хеш-карты предусмотрено ключевое слово Swap.
Дополнительный параметр 'Slots' определяет сколько слотов будет иметь хеш-карта, для хранения элементов. Чем больше слотов, имеет хеш-карта, тем быстрее будет обращение к элементу, но требуется больше памяти, которую хеш-карта будет использовать. Необходим компромисс, зависящий от числа элементов, которые хеш-карта будет содержать и скоростью, необходимой для доступа к элементам. Значение по умолчанию 512. Этот параметр не имеет влияния на количество элементов, которое хеш-карта может содержать
Пример: Простая Хеш-карта
NewMap Country.s() Country("GE") = "Germany" Country("FR") = "France" Country("UK") = "United Kingdom" Debug Country("FR") ForEach Country() Debug Country() Next
Пример: Хеш-карта как параметр процедуры
NewMap Country.s() Country("GE") = "Germany" Country("FR") = "France" Country("UK") = "United Kingdom" Procedure DebugMap(Map ParameterMap.s()) ParameterMap("US") = "United States" ForEach ParameterMap() Debug ParameterMap() Next EndProcedure DebugMap(Country())
Пример: Структурированная Хеш-карта
Structure Car Weight.l Speed.l Price.l EndStructure NewMap Cars.Car() ; Здесь мы используем текущий элемент после новой вставки ; Cars("Ferrari F40")\Weight = 1000 Cars()\Speed = 320 Cars()\Price = 500000 Cars("Lamborghini Gallardo")\Weight = 1200 Cars()\Speed = 340 Cars()\Price = 700000 ForEach Cars() Debug "Car name: "+MapKey(Cars()) Debug "Weight: "+Str(Cars()\Weight) Next