フィルターにいる間にパイプ操作を終了する方法はありますか?
SQL の TOP ステートメントと同様に、リストの最初の n 個の要素を取得するのに適しています。"Top" という名前のフィルターを作成した場合、次のように最初の 3 つの要素を取得できます。
dir | Top 3
最初の 3 つを返したら、それ以上要素を処理する必要はありません。実際には、パイプに伝えることができるようにする必要があります。
これ以上要素を与えないでください
Select-Object に -First 引数があることは知っていますが、それは私が求めている質問ではありません。
F# Seq.forall と同等の Powershellという質問に答えましたが、代わりに、パイプライン入力を終了するフィルターとして実装したいと思います。「パイプラインの終了」と呼ばれる操作があった場合、ForAll を次のように実装します。
filter ForAll([scriptblock] $predicate) {
process {
if ( @($_ | Where-Object $predicate).Length -eq 0 ) {
$false;
end-pipeline;
}
}
end {
$true;
}
}