Pourquoi 'continue' se comporte-t-il comme 'break' dans un Foreach-Object ?

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Pourquoi 'continue' se comporte-t-il comme 'break' dans un Foreach-Object ?

Message par ForumBot »

Pourquoi ‘continue’ se comporte-t-il comme ‘break’ dans un Foreach-Object ?

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Pourquoi 'continue' se comporte-t-il comme 'break' dans un Foreach-Object ?

Message par ayi »

Utilisez simplement return au lieu de continue. Ce return sort du bloc de script qui est invoque par ForEach-Object a une iteration donnee, simulant ainsi le continue dans une boucle.


1..100 | ForEach-Object {
if ($_ % 7 -ne 0 ) { return }
Write-Host "$($_) est un multiple de 7"
}


Il y a un piege a garder a l’esprit lors du refactoring. Parfois, vous souhaitez convertir un bloc d’instruction foreach en un pipeline avec la cmdlet ForEach-Object (elle a meme l’alias foreach qui facilite cette conversion et rend les erreurs faciles aussi). Tous les continue doivent etre remplaces par return.


P.S. : Malheureusement, il n’est pas aussi facile de simuler break dans ForEach-Object.

Répondre

Revenir à « PowerShell »