Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Información de versiones
Versiones de la biblioteca básica de F#
Se admite en la versión: 2.0