다음을 통해 공유


Lazy.CreateFromValue<'T> 확장 메서드(F#)

업데이트: 2010년 5월

필요한 경우 지정된 값에 대한 계산을 강제로 수행하는 지연 계산을 만듭니다.

네임스페이스/모듈 경로: Microsoft.FSharp.Control.LazyExtensions

어셈블리: FSharp.Core(FSharp.Core.dll)

// Signature:
type System.Lazy with
  member static CreateFromValue : Lazy<'T>

// Usage:
lazy.CreateFromValue (value)

매개 변수

  • value
    형식: 'T

    입력 값입니다.

반환 값

만들어진 Lazy 개체입니다.

예제

다음 코드 예제에서는 Lazy.CreateFromValue 확장 메서드를 사용하는 예를 보여 줍니다. 이 예제에서 이전에 계산된 값을 저장하는 데 사전이 사용됩니다. 값을 이미 계산한 경우 재귀 함수를 호출하면 Lazy.CreateFromValue가 캐시 결과와 함께 호출됩니다. 값이 이미 계산되지 않은 경우 Lazy.Create이 사용됩니다.


let cacheMap = new System.Collections.Generic.Dictionary<_, _>()
cacheMap.Add(0, 1I)
cacheMap.Add(1, 1I)

let lazyFactorial n =
    let rec factorial n =
        if cacheMap.ContainsKey(n) then cacheMap.[n] else
        let result = new System.Numerics.BigInteger(n) * factorial (n - 1)
        cacheMap.Add(n, result)
        result
    if cacheMap.ContainsKey(n) then
        printfn "Reading factorial for %d from cache." n
        Lazy.CreateFromValue(cacheMap.[n])
    else
        printfn "Creating lazy factorial for %d." n
        Lazy.Create (fun () ->
            printfn "Evaluating lazy factorial for %d." n
            let result = factorial n
            result)

printfn "%A" ((lazyFactorial 12).Force())
printfn "%A" ((lazyFactorial 10).Force())
printfn "%A" ((lazyFactorial 11).Force())
printfn "%A" ((lazyFactorial 30).Force())

Output

                

플랫폼

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

Silverlight

지원되는 버전: 3

참고 항목

참조

Control.LazyExtensions 모듈(F#)

Lazy<T>

지연 계산(F#)

변경 기록

날짜

변경 내용

이유

2010년 5월

코드 예제를 추가했습니다.

향상된 기능 관련 정보