延遲表達式 是不會立即評估的表達式,而是在需要時評估結果。 這有助於改善程式代碼的效能。
語法
let identifier = lazy ( expression )
備註
在上一個語法中, expression 是只有在需要結果時才會評估的程序代碼,而 identifier 是儲存結果的值。 值的類型為 Lazy<'T>,其中所使用的 'T 實際型別會從表達式的結果決定。
延遲表達式可讓您藉由將表達式的執行限制為僅需要結果的情況,來改善效能。
若要強制執行表示式,您可以呼叫 方法 Force。
Force 只會執行一次執行。 後續呼叫以傳 Force 回相同的結果,但不會執行任何程序代碼。
下列程式代碼說明使用延遲表示式和使用 Force。 在這裡程式代碼中,的型 result 別為 Lazy<int>,而 Force 方法會傳 int回 。
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# 格式設定指南。