次の方法で共有


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 Server 2008 R2

バージョン情報

F# コア ライブラリのバージョン

サポート: 2.0

参照

関連項目

Control.LazyExtensions モジュール (F#)

Lazy<T>

遅延計算 (F#)