Пытаюсь понять цикл

#arrays #powershell #loops #for-loop

#массивы #powershell #циклы #для цикла

Вопрос:

Новое для сценариев Powershell из Python. Я просто не уверен, почему ‘$ i = 1’ не перезаписывает $ i до первого ‘write-host («i: «)’ :

 $myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123

write-host("using for loop")
for ($i = 0; $i -le ($myList.length - 1); $i  = 1){
    write-host("i: ")
    $i
    write-host("myList[i]: ")
    $myList[$i]
}
  

Я не понимаю, что делают точки с запятой и как это связано с приведенным ниже блоком кода. Код работает так, как я хочу. Но я прочитал это как «инициализируйте i равным 0, если i меньше или равно 9 — увеличьте i на 1». Но если бы это было так, то мне было бы присвоено значение 1 перед первым запуском узла записи. Вместо этого он передает 0, а затем увеличивает $ i.

Комментарии:

1. Вы указываете $i начинать с 0 (первый цикл) и увеличивать 1 в конце каждого цикла, в то время как $ i меньше или равно длине списка минус 1. Если вы хотите начать с 1, установите $i равным 1 в начале.

2. также … [1] вы НЕ должны использовать () around input для командлета или функции, если вы не ЗНАЕТЕ, что это необходимо. похоже, вашим Write-Host вызовам это не нужно. [2] вы отключили $ in в своих W-H вызовах, поэтому переменная не вычисляется… он просто печатает i: amp; myList[i]: . [ усмешка ]

Ответ №1:

Перевод

set $variable equal to 0 ;
do a thing while $variable is less than OR equal to (<number of items in list> -1) ; finally set $variable equal to $variable 1

 for (<Initial iterator value>; <Condition>; <Code to increase iterator>)
{
    <Statement list>
}
  

Statement list Выполняется перед Code to increase iterator

ШАГ 1

В начале инструкции цикла for начальное значение считывается и сохраняется в памяти.

Пример: $i = 0

ШАГ 2

Оператор цикла for вычисляет логический результат выражения внутри заполнителя условия. Если результат равен $false, цикл for завершается. Если результат равен $true, то цикл for переходит к следующему шагу.

Пример: $i -le ($list.length -1)

ШАГ 3

PowerShell запускает код внутри заполнителя списка инструкций. Может быть одна или несколько команд, блоков сценариев или функций.

Пример: Write-Ouput $i

ШАГ 4

На этом шаге выполняется выражение в повторяющемся заполнителе, которое обновит текущее значение исходного заполнителя. Затем поток вернется к шагу 2.

Пример: $i