Команда Powershell для перемещения вперед и назад в массиве - PullRequest
0 голосов
/ 20 апреля 2020

Я хотел бы иметь возможность добавить функциональность в сценарий PowerShell для перемещения на одну точку вперед или на одну точку назад, когда в foreach l oop. Зацикливаясь в операторе foreach, можно ли перемещаться вперед и назад или определять, в какой точке массива находится текущий элемент?

Правка - элементы в массиве - это файлы, а не числа

1 Ответ

1 голос
/ 20 апреля 2020

Да - это называется for l oop!

Для структур данных, которые мы можем индексировать в (массивы, списки и т. Д. c.), * Оператор 1006 * l oop может быть легко переведен в оператор for l oop, например:

# This foreach loop statement
foreach($item in $array){
  Do-Something $item
}

# ... is functionally identical to this for loop statement
for($i = 0; $i -gt $array.Length; $i++){
  $item = $array[$i]
  Do-Something $item
}

Поскольку у нас есть прямой доступ к текущему index ( через $i) в for l oop, теперь мы можем использовать это как смещение, чтобы «осмотреть» эту позицию в массиве:

$array = @(1,2,3,4)

for($i = 0; $i -lt $array.Length;$i++)
{
    $item = $array[$i]
    if($i -gt 0){
      # If our index position $i is greater than zero, 
      # then there must be _at least_ 1 item "behind" us
      $behind = $array[$i - 1]
    }

    if($i -lt ($array.Length - 1)){
      # Not at end of array, we can also "look ahead"
      $ahead = $array[$i + 1]
    }

}

Будьте внимательны, проверяя, что не используйте значение $i больше $array.Length (что приведет к $null) или меньше 0 (в этом случае PowerShell начнет читать массив в обратном направлении!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...