다음을 통해 공유


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 Windows 서버 2012, Windows Server 2008 R2, Windows 7, 8

버전 정보

F# 코어 라이브러리 버전

지원: 2.0, 4.0, 노트북

참고 항목

참조

Control.Event 모듈(F#)

Microsoft.FSharp.Control 네임스페이스(F#)