延迟表达式 是未立即计算的表达式,而是在需要时计算结果。 这有助于提高代码的性能。
语法
let identifier = lazy ( expression )
注解
在前面的语法中, 表达式 是仅在需要结果时计算的代码, 标识符 是存储结果的值。 值的类型 Lazy<'T>,其中用于 'T 的实际类型是根据表达式的结果确定的。
延迟表达式使你能够通过将表达式的执行限制为仅需要结果的情况来提高性能。
若要强制执行表达式,请调用该方法 Force。
Force 导致执行只执行一次。 后续调用以 Force 返回相同的结果,但不执行任何代码。
下面的代码演示了懒惰表达式的使用和用法 Force。 在此代码中,类型result为,该方法Lazy<int>返回一个 Forceint。
let x = 10
let result = lazy (x + 10)
printfn "%d" (result.Force())
延迟计算(而不是 Lazy 类型)也用于序列。 有关详细信息,请参阅 序列。
Formatting
对于多行延迟表达式,请将左括号置于与关键字相同的行 lazy 上,表达式正文缩进一个级别:
let expensiveCalculation =
lazy (
let step1 = performStep1()
let step2 = performStep2 step1
step2 * 2
)
有关设置延迟表达式的格式的详细信息,请参阅 F# 格式设置指南。