遅延式Lazy Expressions

レイジー式は、すぐに評価されるのではなく、結果が必要になったときに評価される式です。Lazy expressions are expressions that are not evaluated immediately, but are instead evaluated when the result is needed. これは、コードのパフォーマンスを向上させるのに役立ちます。This can help to improve the performance of your code.

構文Syntax

let identifier = lazy ( expression )

RemarksRemarks

前の構文では、 expressionは結果が必要な場合にのみ評価されるコードであり、 identifierは結果を格納する値です。In the previous syntax, expression is code that is evaluated only when a result is required, and identifier is a value that stores the result. 値は型Lazy<'T>であり、に'T使用される実際の型は、式の結果から決定されます。The value is of type Lazy<'T>, where the actual type that is used for 'T is determined from the result of the expression.

レイジー式を使用すると、式の実行を、結果が必要な状況のみに制限することで、パフォーマンスを向上させることができます。Lazy expressions enable you to improve performance by restricting the execution of an expressions to only those situations in which a result is needed.

式を強制的に実行するには、メソッドForceを呼び出します。To force the expressions to be performed, you call the method Force. Force実行を1回だけ実行します。Force causes the execution to be performed only one time. 後続のをForce呼び出すと、同じ結果が返されますが、コードは実行されません。Subsequent calls to Force return the same result, but do not execute any code.

次のコードは、レイジー式の使用方法とのForce使用方法を示しています。The following code illustrates the use of lazy expressions and the use of Force. このコードでresultは、の型はLazy<int>で、メソッドはForceを返しintます。In this code, the type of result is Lazy<int>, and the Force method returns an int.

let x = 10
let result = lazy (x + 10)
printfn "%d" (result.Force())

遅延評価は、 Lazy型ではなく、シーケンスにも使用されます。Lazy evaluation, but not the Lazy type, is also used for sequences. 詳細については、「シーケンス」を参照してください。For more information, see Sequences.

関連項目See also