Sway 參考手冊/惰性求值
外觀
許多函式式語言都具有延遲(或惰性)求值函式引數的功能。與應用順序求值(C 和 Java 使用)不同,函式引數在繫結到形式引數之前進行求值,而惰性求值會延遲求值,直到實際需要這些值。這是透過將引數作為thunk傳遞來實現的,thunk 是一種資料結構,其中包含形成引數的實際表示式以及在應用順序下引數將被求值的上下文。
Sway 允許程式設計師決定是否使用惰性求值。為了表示惰性求值,形式引數的名稱以美元符號 ($) 開頭。當需要引數的實際值時,將使用 force 函式來在 thunk 中求值引數表示式。以下是一個示例
function f($x)
{
println("about to force...");
force($x);
}
f(println("hello"));執行此程式碼時,我們將得到以下輸出
about to force...
hello
將其與以下程式碼的輸出進行對比,在該程式碼中,形式引數的名稱是正常的
function f(x)
{
println("about to force...");
force(x);
}
f(println("hello"));執行此新程式碼時,我們將得到以下輸出
hello
about to force...
這是因為 println 必須在將其結果繫結到形式引數x之前進行求值。