Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Rövid leírás
Azt ismerteti, hogy a continue utasítás hogyan adja vissza azonnal a programfolyamatot egy programhurok tetejére, egy switch utasításba vagy egy trap utasításba.
Hosszú leírás
A continue utasítással kiléphet az aktuális vezérlőblokkból, de folytathatja a végrehajtást a teljes kilépés helyett. Az utasítás támogatja a címkéket.
A címke egy szkriptben lévő utasításhoz hozzárendelt név.
Folytatás használata hurkokban
A címkézetlen continue utasítás azonnal visszaadja a programfolyamatot a legbelső hurok tetejére, amelyet egy for, foreach, dovagy while utasítás vezérel. A ciklus aktuális iterációja leáll, és a hurok a következő iterációval folytatódik.
Az alábbi példában a programfolyamat a while ciklus elejére tér vissza, ha a $ctr változó értéke 5. Ennek eredményeként az 1 és 10 közötti számok az 5 kivételével jelennek meg:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
Ha for ciklust használ, a végrehajtás a <Repeat> utasításnál folytatódik, amelyet a <Condition> teszt követ. Az alábbi példában nem történik végtelen ciklus, mert a $i csökkenése a continue kulcsszó után következik be.
# <Init> <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
Write-Host -Object $i
if ($i -eq 5)
{
continue
# Will not result in an infinite loop.
$i--
}
}
Címkézett folytatás alkalmazása egy ciklusban
A címkézett continue utasítás leállítja az iteráció végrehajtását, és átadja a vezérlést a célként megadott, beágyazott iteráció vagy switch utasítás címkéjének.
Az alábbi példában a legbelső for akkor fejeződik be, ha $conditionIgaz, és az iteráció a második for ciklussal folytatódik labelB.
:labelA for ($i = 1; $i -le 10; $i++) {
:labelB for ($j = 1; $j -le 10; $j++) {
:labelC for ($k = 1; $k -le 10; $k++) {
if ($condition) {
continue labelB
} else {
$condition = Update-Condition
}
}
}
}
Folytatás használata kapcsolóutasításban
Egy continue címkézetlen switch utasítás leállítja az aktuális switch iteráció végrehajtását, és a vezérlőt a switch tetejére továbbítja a következő bemeneti elem lekéréséhez.
Ha egyetlen bemeneti elem van, continue kilép a teljes switch utasításból. Ha a switch bemenet gyűjtemény, a switch teszteli a gyűjtemény minden elemét. A continue kilép az aktuális iterációból, és a switch a következő elemmel folytatódik.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Folytatás használata trap utasításban
Ha a törzsben végrehajtott utolsó utasítás trap utasítás continue, a rendszer csendben figyelmen kívül hagyja a beszorult hibát, és a végrehajtás a trap bekövetkeztét közvetlenül követő utasítással folytatódik.
Ne használja a folytatást hurkon, kapcsolón vagy trapen kívül
Ha continue közvetlenül támogató szerkezeten (hurkok, switch, trap) kívül van használva, a PowerShell a hívásverem egy belefoglaló szerkezethez. Ha nem talál megfelelően összefüggő szerkezetet, az aktuális futtatótér észrevétlenül leáll.
Ez azt jelenti, hogy azok a függvények és szkriptek, amelyek véletlenül egy continue használnak egy olyan beágyazó struktúrán kívül, amely lehetővé teszi azt, váratlanul megszakíthatják hívóikat.
Ha continue egy folyamaton belül használ, például egy ForEach-Object szkriptblokkot, nem csak kilép a folyamatból, hanem a teljes futtatókörnyezetet is leállítja.
Lásd még
- about_Break
- összehasonlító_operátorok_ról
- about_For
- about_Throw
- Trap_témája
- about_Try_Catch_Finally (In case these terms require a context-based translation: a Try_Catch_Finally lehetőségei)