Applicazioni console

Questo articolo illustra come strutturare un'applicazione console F#.

Punto di ingresso implicito

Per impostazione predefinita, le applicazioni F# usano un punto di ingresso implicito. Ad esempio, per il programma seguente, il punto di ingresso è implicito e, quando il programma viene eseguito, il codice viene eseguito dalla prima riga all'ultimo:

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

Punto di ingresso esplicito

Se si vuole, è possibile usare un punto di ingresso esplicito. Questa operazione viene in genere eseguita per uno o tutti i motivi seguenti:

  • Si preferisce accedere agli argomenti della riga di comando tramite un argomento passato a una funzione anziché usare System.Environment.GetCommandLineArgs().

  • Si vuole restituire un codice di errore tramite un risultato restituito, anziché usare exit.

  • Si vuole eseguire unit test del codice nell'ultimo file dell'applicazione console.

Nell'esempio seguente viene illustrata una funzione semplice main con un punto di ingresso esplicito.

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

Quando questo codice viene eseguito con la riga EntryPoint.exe 1 2 3di comando , l'output è il seguente.

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

Sintassi

[<EntryPoint>]
let-function-binding

Osservazioni:

Nella sintassi precedente, let-function-binding è la definizione di una funzione in un'associazione let .

Il punto di ingresso a un programma compilato come file eseguibile è la posizione in cui viene avviata formalmente l'esecuzione. È possibile specificare il punto di ingresso di un'applicazione F# applicando l'attributo EntryPoint alla funzione del main programma. Questa funzione (creata tramite un'associazione let ) deve essere l'ultima funzione nell'ultimo file compilato. L'ultimo file compilato è l'ultimo file nel progetto o l'ultimo file passato alla riga di comando.

La funzione del punto di ingresso ha il tipo string array -> int. Gli argomenti forniti nella riga di comando vengono passati alla main funzione nella matrice di stringhe. Il primo elemento della matrice è il primo argomento; il nome del file eseguibile non è incluso nella matrice, come in altri linguaggi. Il valore restituito viene usato come codice di uscita per il processo. Zero indica in genere l'esito positivo; valori diversi da zero indicano un errore. Non esiste alcuna convenzione per il significato specifico dei codici restituiti diversi da zero; i significati dei codici restituiti sono specifici dell'applicazione.

Vedere anche