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 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Informazioni sulla versione

Versioni della libreria di base F#

Supportato in: 2,0, 4,0, portabile

Vedere anche

Riferimenti

Modulo Control.Event (F#)

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