Главная > Powershell > Вложенные хеш-таблицы в Powershell

Вложенные хеш-таблицы в Powershell

Для описания каких-либо объектов хорошо подходят хеш-таблицы, так как в них данные хранятся в виде пары ключ-значение. Но часто случается так, что такой простой структуры недостаточно.

Например, хеш-таблица, описывающая человека может иметь вид:

Имя = Иван
Фамилия = Иванов
Адрес = адрес_проживания

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

Я уже рассказывал как это можно реализовать с помощью JSON-объектов. Но если по какой-то причине использовать JSON-объекты не желательно, или нет возможности (например в Windows XP, куда нет возможности установить Powershell 3.0, так как начиная с третьей версии появились командлеты для работы с JSON) можно пойти другим путём и просто использовать вложенные хеш-таблицы.

Делается это очень просто. Посмотрим на примете всё из той же статьи.

В начале создаём и заполняем простую хеш-таблицу:

$User = @{}
$User.Name = 'Иван'
$User.LastName = 'Иванов'

Когда дело доходит до вложенности создаём в нашей хеш-таблице очередной элемент, который в свою очередь будет представлять из себя хеш-таблицу, и заполняем её:

$User.Address = @{}
$User.Address.StreetAddress = 'Московское ш., 101, кв.101'
$User.Address.City = 'Ленинград'
$User.Address.PostalCode = 101101

Если нужно, то аналогичным способом добавляем в наш объект массив:

$User.PhoneNumbers = New-Object "object[]" 2
$User.PhoneNumbers[0] = '812 123-1234'
$User.PhoneNumbers[1] = '916 123-4567'

К свойствам объекта обращаемся точно так же:

PS C:\> $User.Name
Иван
PS C:\> $User.Address.City
Ленинград
PS C:\> $User.PhoneNumbers[0]
812 123-1234

Вот такой нехитрый способ. Хотя лично мне использование JSON-объектов показалось элегантнее.

Реклама
Рубрики:Powershell Метки:
  1. Комментариев нет.
  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: