Lazy.CreateFromValue<'T> 拡張メソッド (F#)
強制されたときに指定された値と評価される遅延計算を作成します。
名前空間/モジュール パス: Microsoft.FSharp.Control.LazyExtensions
アセンブリ: FSharp.Core (FSharp.Core.dll 内)
// Signature:
type System.Lazy with
member static CreateFromValue : Lazy<'T>
// Usage:
lazy.CreateFromValue (value)
パラメーター
value
型: 'T入力値。
戻り値
作成された遅延オブジェクト。
使用例
Lazy.CreateFromValue 拡張メソッドの使用方法を次のコード例に示します。この例では、以前計算した値を格納するためにディクショナリが使用されています。階乗を求める関数が呼び出されると、値が既に計算されている場合は、キャッシュされた結果で Lazy.CreateFromValue が呼び出されます。値が計算されていない場合は、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())
出力
プラットフォーム
Windows 8、Windows 7、Windows Server 2012 で Windows Server 2008 R2
バージョン情報
F# コア ライブラリのバージョン
サポート: 2.0