Поделиться через


Функция 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 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)

Сведения о версии

Среда выполнения F#

Поддерживается в версиях 2.0, 4.0

Silverlight

Поддерживается в версии 3

См. также

Ссылки

Модуль Control.Event (F#)

Пространство имен Microsoft.FSharp.Control (F#)

Журнал изменений

Дата

Журнал

Причина

Сентябрь 2010

Добавлен пример кода.

Улучшение информации.