Aracılığıyla paylaş


Lazy.CreateFromValue<'T> Genişletme Yöntemi (F#)

Zorlandığında verilen değeri değerlendiren bir yavaş hesaplama oluşturur.

Ad alanı/modül yolu: Microsoft.FSharp.Control.LazyExtensions

Derleme: FSharp.Core (FSharp.Core.dll),

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

// Usage:
lazy.CreateFromValue (value)

Parametreler

  • value
    Türü:'T

    Giriş değeri.

Dönüş Değeri

Oluşturulan Lazy nesnesi.

Örnek

Aşağıdaki kod örneği kullanımları gösterilmektedir Lazy.CreateFromValue uzantısı yöntemi. Bu örnekte, bir sözlük daha önceden hesaplanmış değerleri depolamak için kullanılır. Ne zaman Faktöriyel işlevi çağrılırsa, zaten, daha sonra hesaplanan değer, Lazy.CreateFromValue ile önbelleğe alınmış sonucu olarak adlandırılır. Zaten, daha sonra hesaplanan değer değil, Lazy.Create kullanılır.


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())

Çıktı

  
  
  
  
  
  
  

Platformlar

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

Sürüm Bilgisi

F# Çekirdek Kitaplığı sürümleri

Desteklenen: 2.0

Ayrıca bkz.

Başvuru

Control.LazyExtensions Modülü (F#)

Lazy<T>

Tembel hesaplamaları (F#)