以下のシナリオを実行するための Rx の拡張メソッドはありますか?
ポンピングを開始する値 (緑色の円) と、ポンピングを停止する値 (葦の円) があります。青い円は期待される値である必要があります。このコマンドがキャンセルされて再作成されることは望ましくありません (つまり、"TakeUntil" と「SkipUntil」は機能しません)。
LINQ を使用した実装は次のようになります。
public static IEnumerable<T> TakeBetween<T>(this IEnumerable<T> source, Func<T, bool> entry, Func<T, bool> exit)
{
bool yield = false;
foreach (var item in source)
{
if (!yield)
{
if (!entry(item))
continue;
yield = true;
continue;
}
if (exit(item))
{
yield = false;
continue;
}
yield return item;
}
}
これと同じロジックをどのように使用できIObservable<T>
ますか?