Partager via


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

Retourne un nouvel événement qui se compose des résultats de l'application de la fonction d'accumulation donnée aux valeurs consécutives déclenchées sur l'événement d'entrée.

Espace de noms/Chemin du module : 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

Paramètres

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

    Fonction permettant de mettre à jour l'état avec chaque valeur d'événement.

  • state
    Type : 'U

    État initial.

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

    Événement d'entrée.

Valeur de retour

Événement qui déclenche les valeurs d'état mises à jour.

Notes

Un élément d'état interne enregistre la valeur actuelle du paramètre d'état.L'état interne n'est pas verrouillé pendant l'exécution de la fonction d'accumulation. Par conséquent, vous devez donc veiller à ce que l'IEvent d'entrée ne soit pas déclenché simultanément par plusieurs threads.

Cette fonction se nomme Scan dans les assemblys compilés.Si vous accédez à la fonction à partir d'un langage autre que F# ou par réflexion, utilisez ce nom.

Exemple

L'exemple de code suivant montre comment utiliser la fonction Event.scan.Ce code implémente un compteur de clic simple.Chaque fois que l'utilisateur clique sur le formulaire, l'état est incrémenté de 1 et le texte de formulaire est modifié pour afficher le nouvel état.

// 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() )

Plateformes

Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Informations de version

Versions de bibliothèque principale F#

Prise en charge dans : 2,0, 4,0, portables

Voir aussi

Référence

Control.Event, module (F#)

Microsoft.FSharp.Control, espace de noms (F#)