Lazy.CreateFromValue<'T> 확장 메서드(F#)
필요한 경우 지정된 값에 대한 계산을 강제로 수행하는 지연 계산을 만듭니다.
네임스페이스/모듈 경로: 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 Windows 서버 2012, Windows Server 2008 R2, Windows 7, 8
버전 정보
F# 코어 라이브러리 버전
지원되는 버전: 2.0