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: 'TGiriş 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#)
Değişiklik Geçmişi
Tarih |
Geçmiş |
Nedeni |
---|---|---|
Mayıs 2010 |
Eklenen kod örneği. |
Bilgi geliştirme. |