Devam_Hakkında

Kısa açıklama

continue deyiminin program akışını hemen bir program döngüsünün, switch deyiminin veya trap deyiminin en üstüne nasıl döndürdüğü açıklanır.

Uzun açıklama

continue deyimi, tamamen çıkmak yerine sadece geçerli denetim bloğundan çıkıp yürütmeye devam etmek için bir yol sağlar. Açıklama etiketleri destekler. Etiket, betikteki bir deyime atadığınız addır.

Döngülerde devam et'i kullanma

Etiketlenmemiş continue deyimi, program akışını hemen bir for, foreach, doveya while deyimi tarafından kontrol edilen en içteki döngünün başına geri döndürür. Döngünün geçerli yinelemesi sonlandırılır ve döngü sonraki yinelemeyle devam eder.

Aşağıdaki örnekte, while değişkeni 5'e eşitse program akışı $ctr döngüsünün en üstüne döner. Sonuç olarak, 5 dışında 1 ile 10 arasındaki tüm sayılar görüntülenir:

while ($ctr -lt 10)
{
    $ctr += 1
    if ($ctr -eq 5)
    {
        continue
    }

    Write-Host -Object $ctr
}

for döngüsü kullanılırken yürütme, <Repeat> deyiminde devam eder ve ardından <Condition> testini izler. Aşağıdaki örnekte, $i değerinin azaltılması continue anahtar sözcüğünden sonra gerçekleştiği için sonsuz bir döngü oluşmaz.

#   <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--
    }
}

Döngüde etiketli continue kullanımı

Etiketlenmiş continue deyimi, yinelemenin yürütülmesini sonlandırır ve denetimi hedeflenen kapsayıcı yinelemeye veya switch deyimi etiketine aktarır.

Aşağıdaki örnekte, True olduğunda en içteki sonlandırılır ve yineleme 'de ikinci döngüsüyle devam eder.

: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
            }
        }
    }
}

Switch ifadesinde continue kullanımı

Bir continue içindeki etiketsiz switch deyimi, mevcut switch yinelemesinin yürütülmesini sonlandırır ve denetimi, sonraki giriş öğesini almak için switch'ün en üst kısmına aktarır.

Tek bir giriş öğesi olduğunda, continue tüm switch ifadesini sonlandırır. switch girişi bir koleksiyon olduğunda, switch koleksiyonun her öğesini sınar. continue geçerli yinelemeden çıkar ve switch sonraki öğeyle devam eder.

switch (1,2,3) {
  2 { continue }  # moves on to the next element, 3
  default { $_ }
}
1
3

Tuzak deyiminde continue kullanma

Eğer gövdede yürütülen son deyim trap deyimi continueise, kapana kısılan hata sessizce görmezden gelinir ve yürütme, trap'nin oluşmasına neden olan deyimin hemen ardındaki deyimle devam eder.

Döngü, switch veya trap dışında 'continue' kullanmayın.

doğrudan destekleyen bir yapı dışında kullanıldığında (döngüler, , ), PowerShell bir kapsayan yapı aramak için çağrı yığınına bakar. Kapsayan bir yapı bulamazsa, geçerli çalışma alanı sessizce sonlandırılır.

Bu, onu destekleyen kapsayıcı bir yapı dışında yanlışlıkla bir kullanan işlevlerin ve betiklerin, istemedençağıranlarını sonlandırabileceği anlamına gelir.

continue betik bloğu gibi bir işlem hattının içinde ForEach-Object kullanmak işlem hattından çıkmakla olmaz, aynı zamanda çalışma alanının tamamını da sonlandırabilir.

Ayrıca bakınız