Поделиться через


Метод расширения Lazy.Force<'T> (F#)

Обеспечивает принудительное выполнение данного значения и возвращает его результат.Эквивалентно Value.Для предотвращения вычисления значения другими потоками используется взаимное исключение.

Пространство имен/путь к модулю: Microsoft.FSharp.Control.LazyExtensions

Сборка: FSharp.Core (в FSharp.Core.dll)

// Signature:
type System.Lazy with
  member Force : unit -> 'T

// Usage:
lazy.Force ()

Возвращаемое значение

Значение объекта Lazy.

Пример

В следующем примере кода показывается использование метода расширения Force.

let lazyFactorial n = Lazy.Create (fun () ->
    let rec factorial n =
        match n with
        | 0 | 1 -> 1
        | n -> n * factorial (n - 1)
    factorial n)
let printLazy (lazyVal:Lazy<int>) =
    if (lazyVal.IsValueCreated) then
        printfn "Retrieving stored value: %d" (lazyVal.Value)
    else
        printfn "Computing value: %d" (lazyVal.Force())
let lazyVal1 = lazyFactorial 12
let lazyVal2 = lazyFactorial 10
lazyVal1.Force() |> ignore
printLazy lazyVal1
printLazy lazyVal2

Выходные данные показывают, что при вызове метода Force для создания значения для lazyVal1, вычисленное значение извлекается при печати значений.

  

Платформы

Windows 8, Windows 7, Windows Server 2012, Windows 2008 Server R2

Сведения о версии

Основной версии библиотеки F#

Поддерживается в версии 2.0

См. также

Ссылки

Модуль Control.LazyExtensions (F#)

Lazy<T>

Отложенные вычисления (F#)