次の方法で共有


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

更新 : 2010 年 9 月

指定された累積関数を入力イベントでトリガーされた連続する値に適用し、その結果で構成される新しいイベントを返します。

名前空間/モジュール パス: 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 7、Windows Vista SP2、Windows XP SP3、Windows XP x64 SP2、Windows Server 2008 R2、Windows Server 2008 SP2、Windows Server 2003 SP2

バージョン情報

F# ランタイム

サポート対象: 2.0、4.0

Silverlight

サポート: 3

参照

その他の技術情報

Control.Event モジュール (F#)

Microsoft.FSharp.Control 名前空間 (F#)

履歴の変更

日付

履歴

理由

2010 年 9 月

コード例を追加。

情報の拡充