Lazy.CreateFromValue <'T> Metoda rozszerzenie (F#)
Tworzy leniwy obliczeń, dającą danej wartości, dla których wymuszone.
Ścieżka obszaru nazw/modułu: Microsoft.FSharp.Control.LazyExtensions
Zestaw: FSharp.Core (w FSharp.Core.dll)
// Signature:
type System.Lazy with
member static CreateFromValue : Lazy<'T>
// Usage:
lazy.CreateFromValue (value)
Parametry
value
Typ:'TWartość wejściowa.
Wartość zwracana
Utworzony Lazy obiektu.
Przykład
Poniższy przykład kodu ilustruje użycie Lazy.CreateFromValue metodę rozszerzenia.W tym przykładzie słownik jest używany do przechowywania uprzednio obliczonych wartości.Gdy wywoływana funkcja silni, jeśli wartość już jest obliczana, następnie Lazy.CreateFromValue jest wywoływana z buforowanego wyniku.Jeśli wartość jest nie już obliczana, następnie Lazy.Create jest używana.
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())
Dane wyjściowe
Platformy
Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2
Informacje o wersji
F# Core wersji biblioteki
Obsługiwane: 2.0