主控台應用程式

在本文中,您將了解如何建構 F# 主控台應用程式。

隱含進入點

根據預設,F# 應用程式會使用隱含進入點。 例如,對於下列程式,進入點是隱含的,且執行程式時,程式碼會從第一行執行到最後一行:

open System

let printSomeText() =
    let text = "Hello" + "World"
    printfn $"text = {text}"

let showCommandLineArgs() =
    for arg in Environment.GetCommandLineArgs() do
        printfn $"arg = {arg}"

printSomeText()
showCommandLineArgs()
exit 100

隱含進入點

您可以視需要使用明確進入點。 通常會基於下列其中一個或所有原因而這麼做:

  • 您偏好透過傳遞至函式的引數來存取命令列引數,而不是使用 System.Environment.GetCommandLineArgs()

  • 您想要透過傳回結果傳回錯誤碼,而不是使用 exit

  • 您想要對主控台應用程式最後一個檔案中的程式碼進行單元測試。

下列範例說明一個具有明確進入點的簡單 main 函式。

[<EntryPoint>]
let main args =
    printfn "Arguments passed to function : %A" args
    // Return 0. This indicates success.
    0

當使用命令列 EntryPoint.exe 1 2 3 執行此程式碼時,輸出如下。

Arguments passed to function : [|"1"; "2"; "3"|]

語法

[<EntryPoint>]
let-function-binding

備註

在先前的語法中,let-function-bindinglet 繫結中的函式定義。

編譯成可執行檔的程式進入點是正式開始執行的位置。 您可以將 EntryPoint 屬性套用至程式的 main 函式,來指定 F# 應用程式的進入點。 此函式 (使用 let 繫結建立) 必須是最後編譯檔案中的最後一個函式。 最後編譯的檔案是專案中最後一個檔案,或傳遞至命令列的最後一個檔案。

進入點函式具有 string array -> int 類型。 命令列上提供的引數會傳遞至字串陣列中的 main 函式。 陣列的第一個元素是第一個引數;可執行檔的名稱未包含在陣列中,因為是以其他一些語言所撰寫。 傳回值會作為處理序的結束代碼。 零通常表示成功,非零值則表示錯誤。 非零傳回碼沒有固定的特定意義,傳回碼的意義會視應用程式而定。

另請參閱