Freigeben über


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

Gibt ein neues Ereignis zurück, das die Ergebnisse einer Anwendung der angegebenen Akkumulationsfunktion für aufeinander folgende Werte enthält, die im Eingabeereignis ausgelöst werden.

Namespace/Modulpfad: 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

Parameter

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

    Die Funktion zur Aktualisierung des Zustands mit den einzelnen Ereigniswerten.

  • state
    Typ: 'U

    Der Ausgangszustand.

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

    Das Eingabeereignis.

Rückgabewert

Ein Ereignis, das für die aktualisierten Zustandswerte ausgelöst wird.

Hinweise

Ein Element im internen Zustand zeichnet den aktuellen Wert des Zustandsparameters auf.Der interne Zustand wird während der Ausführung der Akkumulationsfunktion nicht gesperrt. Es sollte daher darauf geachtet werden, dass das Eingabe-IEvent nicht von mehreren Threads gleichzeitig ausgelöst wird.

Der Name dieser Funktion in kompilierten Assemblys lautet Scan.Verwenden Sie diesen Namen, wenn Sie in einer anderen .NET-Sprache als F# oder durch Reflektion auf die Funktion zugreifen.

Beispiel

Im folgenden Codebeispiel wird die Verwendung der Event.scan-Funktion veranschaulicht.Dieser Code implementiert einen einfachen Klickzähler.Jedes Mal, wenn der Benutzer auf das Formular klickt, wird der Zustand um 1 erhöht und der Text des Formulars wird geändert, um den neuen Zustand anzuzeigen.

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

Plattformen

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

Versionsinformationen

F#-Kern-Bibliotheks-Versionen

Unterstützt in: 2,0, 4,0, portablen

Siehe auch

Referenz

Control.Event-Modul (F#)

Microsoft.FSharp.Control-Namespace (F#)