Lazy.CreateFromValue<'T> (Método de extensión de F#)
Crea una expresión con procesamiento diferido que se evalúa como el valor especificado en caso de que se fuerce.
Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Control.LazyExtensions
Ensamblado: FSharp.Core (en FSharp.Core.dll)
// Signature:
type System.Lazy with
member static CreateFromValue : Lazy<'T>
// Usage:
lazy.CreateFromValue (value)
Parámetros
value
Tipo: 'TValor de entrada.
Valor devuelto
Objeto Lazy que se ha creado.
Ejemplo
En el ejemplo de código siguiente se muestra el uso de este método de extensión Lazy.CreateFromValue. En este ejemplo, se usa un diccionario para almacenar los valores previamente calculados. Cuando se llama a la función factorial, si el valor ya está calculado, se llama a Lazy.CreateFromValue con el resultado almacenado en caché. Si el valor no se ha calculado aún, se usa 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
Plataformas
Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2
Información de versiones
Runtime de F#
Admitido en: 2.0
Silverlight
Se admite en la versión: 3
Vea también
Referencia
Control.LazyExtensions (Módulo de F#)
Expresiones con procesamiento diferido (F#)
Historial de cambios
Fecha |
Historial |
Motivo |
---|---|---|
Mayo de 2010 |
Se ha agregado un ejemplo de código. |
Mejora de la información. |