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


Метод расширения 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 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)

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

Среда выполнения F#

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

Silverlight

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

См. также

Ссылки

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

Lazy<T>

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

Журнал изменений

Дата

Журнал

Причина

Май 2010

Добавлен пример кода.

Улучшение информации.