次の方法で共有


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#)