Lazy.CreateFromValue<'T>, méthode d'extension (F#)
Crée un calcul tardif qui prend la valeur donnée lorsqu'il est forcé.
Espace de noms/Chemin du module : 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)
Paramètres
value
Type : 'TValeur d'entrée.
Valeur de retour
Objet Lazy créé.
Exemple
L'exemple de code suivant illustre l'utilisation de cette méthode d'extension Lazy.CreateFromValue. Dans cet exemple, un dictionnaire est utilisé pour stocker les valeurs précédemment calculées. Lorsque la fonction factorielle est appelée et que la valeur est déjà calculée, Lazy.CreateFromValue est appelé avec le résultat mis en cache. Si la valeur n'est pas déjà calculée, Lazy.Create est utilisé.
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())
Sortie
Plateformes
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informations de version
Versions de bibliothèque principale F#
Prise en charge dans : 2.0