вебисторий

Хэш-таблицы в Windows PowerShell

Поговорив о массивах, обратимся к хэш-таблицам в Windows PowerShell. Хэш-таблицы это тоже своего рода массивы, еще их называют ассоциативными массивами или словарями. По своей сути хэш-таблицы это структуры для хранения ключей и их значений, связанных попарно. Это может быть что угодно. Например, фамилия студента (ключ) и его оценка за экзамен (значение). Таким образом, ассоциативные массивы это таблицы из двух столбцов — с ключом и значением.

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

В общем виде ассоциативный массив записывается следующим образом:

$имя_массива = @{ключ1 = значение1;  ключ2 = значение2; . . . ключN = значениеN}

Для примера создадим хэш-таблицу с оценками студентов за экзамен.

$primer = @{Иванов="5"; Петров="4"; Сидоров="2"}
Пример создания хэш-таблицы в Windows PowerShell

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

Вот, например, обращение с использованием нотации свойств:

В данном случае хэш-таблица рассматривается как объект. Мы указываем имя нужного свойства и получаем его значение.

Обращение к элементам массива через нотации массива выглядит следующим образом:

Как видите, во втором случае можно получить значения сразу нескольких элементов.

Базовым типом хэш-таблиц в Windows PowerShell является System.Collections.Hashtable. Полный список его свойств и методов можно получить уже знакомым командлетом Get-Member. Так, например, в свойствах Keys хранятся все ключи массива, а в Values — значения.

Просмотр всех ключей и значений в хэш-таблице

Теперь поговорим о том, какие операции мы можем проводить с элементами хэш-таблиц.

Добавить элемент в хэш-таблицу можно так же двумя путями — через соответствующие нотации.

$primer.Волков=4
Добавление элементов в хэш-таблицы PowerShell

или

$primer["Барамидзе"]="2"

Мы можем изменить значение уже существующего элемента через оператор присваивания. Допустим, студент Барамидзе у нас пересдал экзамен.

$primer.Барамидзе="3"
Изменение значения элемента хэш-таблицы в Windows PowerShell

А Сидоров был отчислен. И его из таблицы нам придется удалить. Для этого используется метод Remove().

$primer.Remove("Сидоров")
Удаление элементов хэш-таблицы в Windows PowerShell

Можно создать пустую таблицу и уже потом заполнять её.

Как и в случае с обычными массивами, оператор присваивания действует на хэш-таблицы по ссылке.

В данном случае переменные $a и $b указывают на один и тот же массив. Поменяв значение в $a, мы получим такое же изменение и в $b.