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
참고 항목
참조
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2010년 5월 |
코드 예제를 추가했습니다. |
향상된 기능 관련 정보 |