主控台應用程式
在本文中,您將了解如何建構 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-binding 是 let
繫結中的函式定義。
編譯成可執行檔的程式進入點是正式開始執行的位置。 您可以將 EntryPoint
屬性套用至程式的 main
函式,來指定 F# 應用程式的進入點。 此函式 (使用 let
繫結建立) 必須是最後編譯檔案中的最後一個函式。 最後編譯的檔案是專案中最後一個檔案,或傳遞至命令列的最後一個檔案。
進入點函式具有 string array -> int
類型。 命令列上提供的引數會傳遞至字串陣列中的 main
函式。 陣列的第一個元素是第一個引數;可執行檔的名稱未包含在陣列中,因為是以其他一些語言所撰寫。 傳回值會作為處理序的結束代碼。 零通常表示成功,非零值則表示錯誤。 非零傳回碼沒有固定的特定意義,傳回碼的意義會視應用程式而定。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應