Condividi tramite


Funzione Event.scan<'U,'T,'Del> (F#)

Restituisce un nuovo evento costituito dai risultati derivanti dall'applicazione della funzione di accumulo ai valori successivi attivati nell'evento di input.

Percorso spazio dei nomi/modulo: Microsoft.FSharp.Control.Event

Assembly: FSharp.Core (in FSharp.Core.dll)

// Signature:
Event.scan : ('U -> 'T -> 'U) -> 'U -> IEvent<'Del,'T> -> IEvent<'U> (requires delegate)

// Usage:
Event.scan collector state sourceEvent

Parametri

  • collector
    Tipo: 'U -> 'T -> 'U

    Funzione per aggiornare lo stato con ogni valore dell'evento.

  • state
    Tipo: 'U

    Stato iniziale.

  • sourceEvent
    Tipo: IEvent<'Del,'T>

    Evento di input.

Valore restituito

Evento generato per i valori di stato aggiornati.

Note

Un elemento di stato interno registra il valore corrente del parametro dello stato. Lo stato interno non viene bloccato durante l'esecuzione della funzione di accumulo. È pertanto consigliabile verificare che l'IEvent di input non venga attivato contemporaneamente da più thread.

Questa funzione è denominata Scan negli assembly compilati. Utilizzare questo nome se si accede alla funzione da un linguaggio diverso da F# o tramite reflection.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare la funzione Event.scan. Questo codice implementa un contatore di clic semplice. Ogni volta che l'utente fa clic sul form, lo stato viene incrementato di 1 e il testo del form viene modificato per visualizzare il nuovo stato.

// This code implements a simple click counter. Every time
// the user clicks the form, the state increments by 1
// and the form's text is changed to display the new state.

open System.Windows.Forms
open System.Drawing
open Microsoft.FSharp.Core

let form = new Form(Text = "F# Windows Form",
                    Visible = true,
                    TopMost = true)

let initialState = 0

form.Click
|> Event.scan (fun state _ -> state + 1) initialState
|> Event.add (fun state -> form.Text <- state.ToString() )

Piattaforme

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2.

Informazioni sulla versione

F# Runtime

Supportato in: 2.0, 4.0

Silverlight

Supportato in: 3

Vedere anche

Riferimenti

Modulo Control.Event (F#)

Spazio dei nomi Microsoft.FSharp.Control (F#)

Cronologia delle modifiche

Data

Cronologia

Motivo

Settembre 2010

Aggiunto esempio di codice.

Miglioramento delle informazioni.