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


Функция Event.partition<'T,'Del> (F#)

Возвращает новое событие, ожидающее первоначальное событие и вызывающее первое результирующее событие, если применение предиката к аргументам события возвращает значение true, и второе событие, если возвращается значение false.

Пространство имен/путь к модулю:Microsoft.FSharp.Control.Event

Сборка: FSharp.Core (в FSharp.Core.dll)

// Signature:
Event.partition : ('T -> bool) -> IEvent<'Del,'T> -> IEvent<'T> * IEvent<'T> (requires delegate)

// Usage:
Event.partition predicate sourceEvent

Параметры

  • predicate
    Тип: 'T ->bool

    Функция, предназначенная для определения выходного события, которое следует инициировать.

  • sourceEvent
    Тип: IEvent<'Del,'T>

    Входное событие.

Возвращаемое значение

Кортеж событий.Первое событие активируется, когда предикат возвращает значение true, а второе — при возврате предикатом значения false.

Заметки

В скомпилированных сборках имя этой функции — Partition.При обращении к функции из языка, отличного от F#, или посредством отражения следует использовать это имя.

Пример

В следующем коде показано, как использовать функция Event.partition для разделения событие в два события, каждый с собственным кодом обработки событий.

open System.Windows.Forms
open System.Drawing

let form = new Form(Text = "F# Windows Form",
                    Visible = true,
                    TopMost = true)

let (event1, event2) =
    form.MouseMove 
    |> Event.partition (fun evArgs -> evArgs.X > 100)

event1 |> Event.add ( fun evArgs ->
    form.BackColor <- System.Drawing.Color.FromArgb(
        evArgs.X, evArgs.Y, evArgs.X ^^^ evArgs.Y))
event2 |> Event.add ( fun evArgs ->
    form.BackColor <- System.Drawing.Color.FromArgb(
        evArgs.Y, evArgs.X, evArgs.Y ^^^ evArgs.X))

Платформы

Windows 8, Windows 7, Windows Server 2012, Windows 2008 Server R2

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

Основной версии библиотеки F#

Поддерживается в: 2.0, 4.0, портативное

См. также

Ссылки

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

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