Lazy.CreateFromValue<'T>-Erweiterungsmethode (F#)
Erstellt eine verzögerte Berechnung, die bei Erzwingung den angegebenen Wert ergibt.
Namespace/Modulpfad: Microsoft.FSharp.Control.LazyExtensions
Assembly: FSharp.Core (in FSharp.Core.dll)
// Signature:
type System.Lazy with
member static CreateFromValue : Lazy<'T>
// Usage:
lazy.CreateFromValue (value)
Parameter
value
Typ: 'TDer Eingabewert.
Rückgabewert
Das erstellte Lazy-Objekt.
Beispiel
Im folgenden Codebeispiel wird die Verwendung der Lazy.CreateFromValue-Erweiterungsmethode veranschaulicht.In diesem Beispiel wird ein Wörterbuch verwendet, um zuvor berechnete Werte zu speichern.Wenn die Funktion zur Berechnung der Fakultät aufgerufen wird, wenn der Wert bereits berechnet ist, wird Lazy.CreateFromValue mit dem zwischengespeicherten Ergebnis aufgerufen.Wenn der Wert nicht bereits berechnet wurde, wird Lazy.Create verwendet.
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
Plattformen
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Versionsinformationen
F#-Kern-Bibliotheks-Versionen
Unterstützt in: 2.0