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,可攜式執行檔 (PE)。