Partager via


Observable.Generate<TState, TResult> Method (TState, Func<TState, Boolean>, Func<TState, TState>, Func<TState, TResult>, Func<TState, TimeSpan>, IScheduler)

Génère une séquence observable en itérant un état à partir d’un état initial jusqu’à ce que la condition échoue.

Namespace:System.Reactive.Linq
Assemblée: System.Reactive (en System.Reactive.dll)

Syntaxe

'Declaration
Public Shared Function Generate(Of TState, TResult) ( _
    initialState As TState, _
    condition As Func(Of TState, Boolean), _
    iterate As Func(Of TState, TState), _
    resultSelector As Func(Of TState, TResult), _
    timeSelector As Func(Of TState, TimeSpan), _
    scheduler As IScheduler _
) As IObservable(Of TResult)
'Usage
Dim initialState As TState
Dim condition As Func(Of TState, Boolean)
Dim iterate As Func(Of TState, TState)
Dim resultSelector As Func(Of TState, TResult)
Dim timeSelector As Func(Of TState, TimeSpan)
Dim scheduler As IScheduler
Dim returnValue As IObservable(Of TResult)

returnValue = Observable.Generate(initialState, _
    condition, iterate, resultSelector, _
    timeSelector, scheduler)
public static IObservable<TResult> Generate<TState, TResult>(
    TState initialState,
    Func<TState, bool> condition,
    Func<TState, TState> iterate,
    Func<TState, TResult> resultSelector,
    Func<TState, TimeSpan> timeSelector,
    IScheduler scheduler
)
public:
generic<typename TState, typename TResult>
static IObservable<TResult>^ Generate(
    TState initialState, 
    Func<TState, bool>^ condition, 
    Func<TState, TState>^ iterate, 
    Func<TState, TResult>^ resultSelector, 
    Func<TState, TimeSpan>^ timeSelector, 
    IScheduler^ scheduler
)
static member Generate : 
        initialState:'TState * 
        condition:Func<'TState, bool> * 
        iterate:Func<'TState, 'TState> * 
        resultSelector:Func<'TState, 'TResult> * 
        timeSelector:Func<'TState, TimeSpan> * 
        scheduler:IScheduler -> IObservable<'TResult> 
JScript does not support generic types and methods.

Paramètres de type

  • TState
    Type d’état.
  • TResult
    Type de résultat.

Paramètres

  • initialState
    Type : TState
    État initial.
  • itérer
    Type : System.Func<TState, TState>
    Fonction d’étape d’itération.
  • Resultselector
    Type : System.Func<TState, TResult>
    Fonction de sélecteur pour les résultats générés dans la séquence.
  • timeSelector
    Type : System.Func<TState, TimeSpan>
    Fonction de sélecteur de temps pour contrôler la vitesse de production des valeurs à chaque itération.

Valeur de retour

Type : System.IObservable<TResult>
Séquence générée.

Notes

L’opérateur Generate génère une séquence de type TState en appliquant la fonction itération à initialState jusqu’à ce que la fonction condition retourne false pour l’état actuel. La fonction resultSelector est exécutée pour chaque état afin de générer chaque élément dans la séquence résultante.

Exemples

Cet exemple de code utilise l’opérateur Generate pour générer une séquence d’entiers qui sont des carrés parfaits inférieurs à 1 000.

using System;
using System.Reactive.Concurrency;
using System.Reactive.Linq;

namespace Example
{
  class Program
  {
    static void Main()
    {
      //*********************************************************************************************//
      //*** Generate a sequence of integers which are the perfect squares that are less than 100. ***//
      //*********************************************************************************************//

      var obs = Observable.Generate(1,                             // Initial state value. Starting with 1.
                                    x => x * x < 1000,             // Terminate generation when false (the integer squared is not less than 1000).
                                    x => x + 1,                    // Iteration step function updates the state returning the new state. In this case state is incremented by 1. 
                                    x => x * x,                    // Selector function determines the next resulting value in the sequence. The state of type in is squared.
                                    x => TimeSpan.FromSeconds(1),  // Each item in the sequence delayed by 1 sec.
                                    Scheduler.ThreadPool);         // The ThreadPool scheduler runs the generation on a thread pool thread instead of the main thread.

      using (IDisposable handle = obs.Subscribe(x => Console.WriteLine(x)))
      {
        Console.WriteLine("Press ENTER to exit...\n");
        Console.ReadLine();
      }
    }
  }
}

La sortie suivante a été générée avec l’exemple de code.

Press ENTER to exit...

1
4
9
16
25
36
49
64
81
100
121
144
169
196
225
256
289
324
361
400
441
484
529
576
625
676
729
784
841
900
961

Voir aussi

Référence

Observable, classe

Générer une surcharge

Espace de noms System.Reactive.Linq