Konsolenanwendungen

In diesem Artikel erfahren Sie, wie Sie eine F#-Konsolenanwendung strukturieren.

Impliziter Einstiegspunkt

Standardmäßig verwenden F#-Anwendungen einen impliziten Einstiegspunkt. Für das folgende Programm ist z. B. der Einstiegspunkt implizit, und wenn das Programm ausgeführt wird, wird der Code von der ersten Zeile bis zur letzten ausgeführt:

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

Expliziter Einstiegspunkt

Wenn Sie möchten, können Sie einen expliziten Einstiegspunkt verwenden. Dies geschieht in der Regel aus einem oder allen der folgenden Gründe:

  • Sie bevorzugen den Zugriff auf die Befehlszeilenargumente über ein Argument, das an eine Funktion übergeben wird, anstatt sie zu verwenden System.Environment.GetCommandLineArgs().

  • Sie möchten einen Fehlercode über ein Rückgabeergebnis zurückgeben, anstatt es zu verwenden exit.

  • Sie möchten den Code in der letzten Datei Der Konsolenanwendung komponententesten.

Im folgenden Beispiel wird eine einfache main Funktion mit einem expliziten Einstiegspunkt veranschaulicht.

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

Wenn dieser Code mit der Befehlszeile EntryPoint.exe 1 2 3ausgeführt wird, lautet die Ausgabe wie folgt.

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

Syntax

[<EntryPoint>]
let-function-binding

Bemerkungen

In der vorherigen Syntax ist let-function-binding die Definition einer Funktion in einer let Bindung.

Der Einstiegspunkt zu einem Programm, das als ausführbare Datei kompiliert wird, ist der Ort, an dem die Ausführung formal gestartet wird. Sie geben den Einstiegspunkt für eine F#-Anwendung an, indem Sie das EntryPoint Attribut auf die Funktion des main Programms anwenden. Diese Funktion (erstellt mit einer let Bindung) muss die letzte Funktion in der letzten kompilierten Datei sein. Die letzte kompilierte Datei ist die letzte Datei im Projekt oder die letzte Datei, die an die Befehlszeile übergeben wird.

Die Einstiegspunktfunktion hat Typ string array -> int. Die in der Befehlszeile angegebenen Argumente werden an die main Funktion im Array von Zeichenfolgen übergeben. Das erste Element des Arrays ist das erste Argument; Der Name der ausführbaren Datei ist nicht im Array enthalten, wie in einigen anderen Sprachen. Der Rückgabewert wird als Ausgangscode für den Prozess verwendet. Null zeigt in der Regel erfolg an; Nonzero-Werte deuten auf einen Fehler hin. Es gibt keine Konvention für die spezifische Bedeutung von Nonzero-Rückgabecodes; die Bedeutungen der Rückgabecodes anwendungsspezifisch sind.

Siehe auch