Metodo di estensione Lazy.CreateFromValue<'T> (F#)
Crea un calcolo differito che restituisce il valore specificato nel momento in cui viene imposto.
Percorso di spazio dei nomi/modulo: 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)
Parametri
value
Tipo: 'TValore di input.
Valore restituito
Oggetto Lazy creato.
Esempio
Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo del metodo di estensione Lazy.CreateFromValue. In questo esempio, un dizionario viene utilizzato per archiviare i valori precedentemente calcolati. Quando la funzione fattoriale viene chiamata, se il valore è già calcolato, Lazy.CreateFromValue viene chiamato con il risultato memorizzato nella cache. Se il valore non è già calcolato, viene quindi utilizzato Lazy.Create.
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
Piattaforme
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informazioni sulla versione
Versioni della libreria di base F#
Supportato in: 2.0