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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2.
Informazioni sulla versione
F# Runtime
Supportata in: 2.0
Silverlight
Supportato in: 3
Vedere anche
Riferimenti
Modulo Control.LazyExtensions (F#)
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Maggio 2010 |
Aggiunto esempio di codice. |
Miglioramento delle informazioni. |