【问题标题】:Trying to understand loop试图理解循环
【发布时间】:2021-02-03 16:24:15
【问题描述】:

来自 Python 的 Powershell 脚本的新手。我只是不确定为什么 '$i += 1' 没有在第一个 'write-host("i: ")' 之前覆盖 $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 小于或等于 9,则将 i 初始化为 0-将 i 增加 1”。但如果是这种情况,那么 i 将在第一次执行 write-host 之前设置为 1。相反,它传递 0,然后递增 $i。

【问题讨论】:

  • 你告诉 $i 从 0 开始(第一个循环)并在每个循环结束时增加 1,而 $i 小于或等于列表长度减 1。如果你想从1、一开始就设置$i为1。
  • also ... [1] 除非您知道需要,否则不应在 cmdlet 或函数的输入周围使用 ()。你的Write-Host 电话似乎不需要它。 [2] 您在 W-H 调用中省略了 $,因此不会对变量进行评估......它只会打印 i: myList[i]: 。 [咧嘴]

标签: arrays powershell loops for-loop


【解决方案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 listCode to increase iterator

之前执行

步骤 1

在for循环语句的开始,读取Initial值并存入内存。

示例:$i = 0

第 2 步

for 循环语句计算 Condition 占位符内表达式的布尔结果。如果结果为 $false,则终止 for 循环。如果结果为 $true,则 for 循环继续执行下一步。

示例:$i -le ($list.length -1)

第三步

PowerShell 运行语句列表占位符内的代码。可能有一个或多个命令、脚本块或函数。

示例:Write-Ouput $i

第四步

在这一步中,Repeat 占位符中的表达式被运行,它将更新 Initial placeholder 的当前值。然后,流程将返回到第 2 步。

示例:$i++

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多