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 içinde)

// 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, sonra hesaplanan değer, Lazy.CreateFromValue olarak adlandırılan önbelleğe alınmış sonucu. Zaten, 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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Sürüm Bilgileri

F# Çalışma Zamanı

Desteklenir: 2.0

Silverlight

Desteklenir: 3

Ayrıca bkz.

Başvuru

Control.LazyExtensions Modülü (F#)

Lazy<T>

Yavaş hesaplamaları (F #)

Değişiklik Geçmişi

Tarih

Geçmiş

Nedeni

Mayıs 2010

Eklenen kod örneği.

Bilgi geliştirme.