Поговорив о массивах, обратимся к хэш-таблицам в Windows PowerShell. Хэш-таблицы это тоже своего рода массивы, еще их называют ассоциативными массивами или словарями. По своей сути хэш-таблицы это структуры для хранения ключей и их значений, связанных попарно. Это может быть что угодно. Например, фамилия студента (ключ) и его оценка за экзамен (значение). Таким образом, ассоциативные массивы это таблицы из двух столбцов — с ключом и значением.
В целом, хэш-таблицы в PowerShell похожи на обычные массивы. Разница состоит в том, что обращаться к элементам массива нужно не по индексу, а по их ключу. В таком случае PowerShell возвращает соответствующее значение.
В общем виде ассоциативный массив записывается следующим образом:
$имя_массива = @{ключ1 = значение1; ключ2 = значение2; . . . ключN = значениеN}
Для примера создадим хэш-таблицу с оценками студентов за экзамен.
$primer = @{Иванов="5"; Петров="4"; Сидоров="2"}
Для того, чтобы обратиться с элементу хэш-таблицы, можно использовать два способа — обращение через нотации свойств или обращение через нотации массивов.
Вот, например, обращение с использованием нотации свойств:
В данном случае хэш-таблица рассматривается как объект. Мы указываем имя нужного свойства и получаем его значение.
Обращение к элементам массива через нотации массива выглядит следующим образом:
Как видите, во втором случае можно получить значения сразу нескольких элементов.
Базовым типом хэш-таблиц в Windows PowerShell является System.Collections.Hashtable. Полный список его свойств и методов можно получить уже знакомым командлетом Get-Member. Так, например, в свойствах Keys хранятся все ключи массива, а в Values — значения.
Теперь поговорим о том, какие операции мы можем проводить с элементами хэш-таблиц.
Добавить элемент в хэш-таблицу можно так же двумя путями — через соответствующие нотации.
$primer.Волков=4
или
$primer["Барамидзе"]="2"
Мы можем изменить значение уже существующего элемента через оператор присваивания. Допустим, студент Барамидзе у нас пересдал экзамен.
$primer.Барамидзе="3"
А Сидоров был отчислен. И его из таблицы нам придется удалить. Для этого используется метод Remove().
$primer.Remove("Сидоров")
Можно создать пустую таблицу и уже потом заполнять её.
Как и в случае с обычными массивами, оператор присваивания действует на хэш-таблицы по ссылке.
В данном случае переменные $a и $b указывают на один и тот же массив. Поменяв значение в $a, мы получим такое же изменение и в $b.
Статьи по теме: