內聯

內聯允許你使用函式體替換對函式的呼叫。

這有時對於程式碼關鍵部分的效能原因很有用。但是對應的是你的程式集會佔用很多空間,因為函式體在呼叫發生的每個地方都是重複的。在決定是否行內函數時必須小心。

可以使用 inline 關鍵字行內函數:

// inline indicate that we want to replace each call to sayHello with the body 
// of the function
let inline sayHello s1 =
    sprintf "Hello %s" s1

// Call to sayHello will be replaced with the body of the function
let s = sayHello "Foo"
// After inlining -> 
// let s = sprintf "Hello %s" "Foo"

printfn "%s" s
// Output
// "Hello Foo"

具有本地價值的另一個例子

let inline addAndMulti num1 num2 =
    let add = num1 + num2
    add * 2

let i = addAndMulti 2 2
// After inlining ->
// let add = 2 + 2
// let i = add * 2

printfn "%i" i
// Output
// 8