Продолжаем разговор о массивах в Windows PowerShell. В предыдущей части мы говорили об обращении к элементам массива. Сегодня поговорим об операциях с массивом.
Операции с массивом
По умолчанию все массивы в PowerShell являются полиморфными, т.е. способны содержать в себе элементы разных типов.
Давайте создадим массив $a, состоящий, к примеру, из трех элементов 1, 2 и 3. И проверим его тип на практике.
Итак, как видим, для того, чтобы посмотреть тип массива $a, нам нужно набрать
$a.GetType().FullName
и мы увидим, что это массив типа System.Object[]. Такие массивы могут содержать объекты всех типов.
Мы можем создать массив с жестко заданными элементами одного типа. Для этого при создании массива перед его именем нужно прописать в квадратных скобках нужный нам тип переменных.
[int[]]$a=1,2,3
Если мы попытаемся перезаписать значение элемента такого массива на что-нибудь неподходящее, мы увидим следующее сообщение об ошибке:
Теперь поговорим о том, как можно изменять уже существующие массивы.
К примеру, наш массив $a имеет три элемента, если мы попытаемся обратиться к элементу, выходящему за границы массива, PowerShell просто проигнорирует нас. А вот если мы попытаемся изменить значение несуществующего элемента, нас встретит сообщение об ошибке.
Если нам нужно увеличить длину массива, мы можем использовать операторы + или +=.
По факту, в данном случае мы не добавили элементы к существующему массиву, а создали новый, в который было скопировано содержимое старого массива и добавлены новые элементы.
По той же логике мы не можем удалить элементы из уже существующего массива, но мы можем создать новый массив и скопировать туда все элементы, кроме ненужных.
Объединить массивы довольно просто.
Для удаления массива нужно воспользоваться командлетом Remove-Item (псевдоним del) и удалить массив с виртуального диска variable. Ниже пример удаления массива $a.
И последнее, что нужно знать о массивах. Если мы просто используем оператор присваивания (=), то новый массив будет своеобразной ссылкой на предыдущий. К примеру, $b=$a создаёт массив $b, который ссылается на $a. Если мы изменим значения элементов массива $a, то они изменятся и в $b. Данное правило не касается массивов, полученных из объединения других.
Статьи по теме: