Метод расширения 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#)
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Май 2010 |
Добавлен пример кода. |
Улучшение информации. |