Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Genera una secuencia observable mediante la iteración de un estado desde un estado inicial hasta que se produce un error en la condición.
Espacio de nombres:System.Reactive.Linq
Ensamblaje: System.Reactive (en System.Reactive.dll)
Sintaxis
'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), _
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 scheduler As IScheduler
Dim returnValue As IObservable(Of TResult)
returnValue = Observable.Generate(initialState, _
condition, iterate, resultSelector, _
scheduler)
public static IObservable<TResult> Generate<TState, TResult>(
TState initialState,
Func<TState, bool> condition,
Func<TState, TState> iterate,
Func<TState, TResult> resultSelector,
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,
IScheduler^ scheduler
)
static member Generate :
initialState:'TState *
condition:Func<'TState, bool> *
iterate:Func<'TState, 'TState> *
resultSelector:Func<'TState, 'TResult> *
scheduler:IScheduler -> IObservable<'TResult>
JScript does not support generic types and methods.
Parámetros de tipo
- TState
Tipo de estado.
- TResult
Tipo de resultado.
Parámetros
- initialState
Tipo: TState
Estado inicial.
- condición
Tipo: System.Func<TState, Boolean>
Condición para finalizar la generación.
- iterar
Tipo: System.Func<TState, TState>
Función del paso de iteración.
- resultSelector
Tipo: System.Func<TState, TResult>
Función selectora para los resultados generados en la secuencia.
- scheduler
Tipo: System.Reactive.Concurrency.IScheduler
Programador en el que se va a ejecutar el bucle del generador.
Valor devuelto
Tipo: System.IObservable<TResult>
Secuencia generada.
Observaciones
El operador Generate genera una secuencia del tipo TState aplicando la función iterate a initialState hasta que la función condition devuelva false para el estado actual. La función resultSelector se ejecuta para cada estado para generar cada elemento en la secuencia resultante.
Ejemplos
En este ejemplo de código se usa el operador Generate para generar una secuencia de los enteros que son cuadrados perfectos inferiores a 1000.
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
x => x * x < 1000, // The termination condition. Terminate generation when false (the integer squared is not less than 1000).
x => x + 1, // Iteration step function updates the state and returns 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.
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();
}
}
}
}
En la salida siguiente se muestra cómo ejecutar el código de ejemplo.
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