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

返回一个新事件,该事件由将给定累积函数应用于输入事件上触发的连续值而产生的结果组成。

命名空间/模块路径: Microsoft.FSharp.Control.Event

程序集:FSharp.Core(在 FSharp.Core.dll 中)

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

// Usage:
Event.scan collector state sourceEvent

参数

  • collector
    类型:'U -> 'T -> 'U

    用于使用每个事件值更新状态的函数。

  • state
    类型:'U

    初始状态。

  • sourceEvent
    类型:IEvent<'Del,'T>

    输入事件。

返回值

对已更新的状态值引发的事件。

备注

内部状态的项记录状态参数的当前值。 在执行累积函数过程中,内部状态是没有锁定的,因此,应防止多个线程同时触发输入 IEvent

此函数在编译的程序集中名为 Scan。 如果从 F# 以外的语言中访问函数,或通过反射访问成员,请使用此名称。

示例

下面的代码示例演示如何使用 Event.scan 函数。 此节点实现简单的单击计数器。 每次用户单击窗体,状态增加 1 并且窗体的文本将被更改以显示新的状态。

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

平台

Windows 8,Windows 7,Windows server 2012中,Windows server 2008 R2

版本信息

F#核心库版本

支持:2.0,4.0,可移植

请参见

参考

Control.Event 模块 (F#)

Microsoft.FSharp.Control 命名空间 (F#)