[解決済み] Foreach-Objectで'continue'が'break'のように動作するのはなぜですか?
2022-05-28 14:35:37
質問
PowerShellスクリプトで以下を実行すると。
$range = 1..100
ForEach ($_ in $range) {
if ($_ % 7 -ne 0 ) { continue; }
Write-Host "$($_) is a multiple of 7"
}
という期待通りの出力が得られます。
7 is a multiple of 7
14 is a multiple of 7
21 is a multiple of 7
28 is a multiple of 7
35 is a multiple of 7
42 is a multiple of 7
49 is a multiple of 7
56 is a multiple of 7
63 is a multiple of 7
70 is a multiple of 7
77 is a multiple of 7
84 is a multiple of 7
91 is a multiple of 7
98 is a multiple of 7
しかし、パイプラインを使用し
ForEach-Object
,
continue
はパイプラインのループから抜け出すようです。
1..100 | ForEach-Object {
if ($_ % 7 -ne 0 ) { continue; }
Write-Host "$($_) is a multiple of 7"
}
を取得することはできますか?
continue
-のような動作をさせながら、ForEach-Objectを行うことは可能でしょうか?
どのように解決するのですか?
単純に
return
の代わりに
continue
. これは
return
が呼び出されるスクリプトブロックから返されます。
ForEach-Object
によって呼び出されるスクリプトブロックから返されます。
continue
をループでシミュレートします。
1..100 | ForEach-Object {
if ($_ % 7 -ne 0 ) { return }
Write-Host "$($_) is a multiple of 7"
}
リファクタリングの際に気をつけなければならないことがあります。時には
foreach
ステートメントブロックをパイプラインに変換して
ForEach-Object
コマンドレット (これは別名
foreach
という別名もあり、この変換を簡単にし、ミスも簡単にするのに役立ちます)。すべて
continue
に置き換える必要があります。
return
.
追記: 残念ながら
break
で
ForEach-Object
.
関連
-
Powershellディレクトリフォルダ管理権限継承・割り当て方法
-
コンピュータのシリアル番号を取得するためのPowershellスクリプト
-
[解決済み] PowerShellでコンソールに書き込むには?
-
[解決済み] Array.forEachでbreakを呼び出すようなショートサーキット
-
[解決済み] PowerShellで関数に複数のパラメータを渡すにはどうすればよいですか?
-
[解決済み] Java 8 のストリーム forEach からブレークまたはリターンしますか?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み】ifとforeachからの脱却
-
[解決済み] Kotlin の `forEach` における `break` と `continue` について
-
[解決済み] Powershellでオブジェクトのプロパティを印刷する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
UbuntuシステムでのPowerShellベースの利用を解説
-
nugetパッケージのファイル消失問題を解決するためのpowershellスクリプトを追加しました。
-
PowerShell 3.0 Hyper-V 3.0 の管理
-
PowerShellでのmatchコマンドの使用方法について解説
-
PowerShell 配列の複数の入力メソッド
-
PowerShell で .NET Framework を使用して、グローバルアセンブリキャッシュにアセンブリを追加する。
-
統計関数のネスト深度のPowerShell実装
-
サーバーの接続状態を監視するためのPowershellの実装
-
PowerShell ISEコードにおける大文字・小文字変換のコツ
-
PowershellでWebサイトのレスポンスを確認し、実行時間を計算する例