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