Condividi tramite


Introduzione a F# in Visual Studio Code

Puoi scrivere F# in Visual Studio Code con il plugin Ionide per ottenere un'esperienza IDE leggera e multipiattaforma con IntelliSense e rifattorizzazioni del codice. Visitare Ionide.io per altre informazioni sul plug-in.

Nota

Prima di iniziare, assicurarsi di aver installato sia F# che il plug-in Ionide.

Creare il primo progetto con Ionide

Per creare un nuovo progetto F#, aprire una riga di comando e creare un nuovo progetto con l'interfaccia della riga di comando di .NET:

dotnet new console -lang "F#" -o FirstIonideProject

Al termine, cambiare directory per il progetto e aprire Visual Studio Code.

cd FirstIonideProject
code .

Dopo il caricamento del progetto in Visual Studio Code, verrà visualizzato il riquadro Esplora soluzioni F# sul lato sinistro della finestra aperta. Ciò significa che Ionide ha caricato correttamente il progetto appena creato. È possibile scrivere codice nell'editor prima di questo momento, ma una volta che ciò avviene, tutto è stato caricato.

Scrivere il primo script

Dopo aver configurato Visual Studio Code per l'uso dello scripting di .NET Core, vai alla visualizzazione Esplora e crea un nuovo file. Denominarlo MyFirstScript.fsx.

Aggiungere ora il codice seguente:

let toPigLatin (word: string) =
    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
    if isVowel word[0] then
        word + "yay"
    else
        word[1..] + string(word[0]) + "ay"

Questa funzione converte una parola in una forma di Pig Latin. Il passaggio successivo consiste nel valutarlo usando F# Interactive (FSI).

Evidenziare l'intera funzione (deve essere lunga 11 righe). Dopo averla evidenziata, tenere premuto il tasto alt e premere INVIO. Si noterà che viene visualizzata una finestra del terminale nella parte inferiore della schermata e dovrebbe essere simile alla seguente:

Esempio di output interattivo F# con Ionide

Questa azione ha comportato tre cose:

  1. È stato avviato il processo FSI.
  2. Ha inviato il codice evidenziato al processo FSI.
  3. Il processo FSI ha valutato il codice inviato.

Poiché ciò che è stato inviato è una funzione , è ora possibile chiamare quella funzione con FSI! Nella finestra interattiva digitare quanto segue:

toPigLatin "banana";;

Verrà visualizzato il risultato seguente:

val it: string = "ananabay"

Ora, proviamo con una vocale come prima lettera. Immettere quanto segue:

toPigLatin "apple";;

Verrà visualizzato il risultato seguente:

val it: string = "appleyay"

La funzione sembra funzionare come previsto. Congratulazioni, è stata appena scritta la prima funzione F# in Visual Studio Code ed è stata valutata con FSI.

Nota

Come avrai notato, le righe in FSI vengono terminate con ;;. Ciò è dovuto al fatto che FSI consente di immettere più righe. Il ;; alla fine comunica all'FSI quando il codice è terminato.

Spiegazione del codice

Se non si è certi di cosa sta effettivamente facendo il codice, ecco una procedura dettagliata.

Come si può notare, toPigLatin è una funzione che accetta una parola come input e la converte in una rappresentazione Pig-Latin di tale parola. Di seguito sono riportate le regole seguenti:

Se il primo carattere di una parola inizia con una vocale, aggiungere "yay" alla fine della parola. Se non inizia con una vocale, spostare il primo carattere alla fine della parola e aggiungervi "ay".

Potresti aver notato quanto segue in FSI:

val toPigLatin: word: string -> string

Questo stato indica che toPigLatin è una funzione che accetta un string come input (denominato word) e restituisce un altro string. Questa operazione è nota come firma del tipo della funzione, una parte fondamentale di F# che è fondamentale per comprendere il codice F#. Si noterà anche questo aspetto se si passa il puntatore del mouse sulla funzione in Visual Studio Code.

Nel corpo della funzione si noteranno due parti distinte:

  1. Una funzione interna, denominata isVowel, che determina se un determinato carattere (c) è una vocale controllando se corrisponde a uno dei modelli forniti tramite il confronto di modelli :

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. Espressione if..then..else che controlla se il primo carattere è una vocale e costruisce un valore restituito dai caratteri di input in base al fatto che il primo carattere sia una vocale o meno:

    if isVowel word[0] then
        word + "yay"
    else
        word[1..] + string(word[0]) + "ay"
    

Il flusso di toPigLatin è quindi:

Controllare se il primo carattere della parola di input è una vocale. In caso affermativo, allegare "yay" alla fine della parola. In caso contrario, sposta il primo carattere alla fine della parola e aggiungi "ay".

C'è un aspetto finale da notare: in F#, non esiste alcuna istruzione esplicita da restituire dalla funzione. Il motivo è che F# è basato su espressioni e l'ultima espressione valutata nel corpo di una funzione determina il valore restituito di tale funzione. Poiché if..then..else è un'espressione, la valutazione del corpo del blocco then o del corpo del blocco else determina il valore restituito dalla funzione toPigLatin.

Trasforma l'app console in un generatore di Pig Latin.

Le sezioni precedenti di questo articolo illustrano un primo passaggio comune per scrivere codice F#: scrivere una funzione iniziale ed eseguirla in modo interattivo con FSI. Questo è noto come sviluppo basato su REPL, dove REPL è l'acronimo di "Read-Evaluate-Print Loop". È un ottimo modo per sperimentare le funzionalità fino a quando non si ha qualcosa di funzionante.

Il passaggio successivo dello sviluppo basato su REPL consiste nello spostare il codice funzionante in un file di implementazione F#. Può quindi essere compilato dal compilatore F# in un assembly eseguibile.

Per iniziare, aprire il file Program.fs creato in precedenza con l'interfaccia della riga di comando di .NET. Si noterà che il codice è già presente.

Successivamente, creare una nuova module denominata PigLatin e copiare la funzione toPigLatin creata in precedenza in questo modo:

module PigLatin =
    let toPigLatin (word: string) =
        let isVowel (c: char) =
            match c with
            | 'a' | 'e' | 'i' | 'o' | 'u'
            | 'A' | 'E' | 'I' | 'O' | 'U' -> true
            |_ -> false
        
        if isVowel word[0] then
            word + "yay"
        else
            word[1..] + string word[0] + "ay"

Questo modulo deve essere sopra la funzione main e sotto la dichiarazione di open System. L'ordine delle dichiarazioni è importante in F#, quindi è necessario definire la funzione prima di chiamarla in un file.

Nella funzione main, ora invoca la tua funzione generatore di Pig Latin sugli argomenti:

[<EntryPoint>]
let main args =
    for arg in args do
        let newArg = PigLatin.toPigLatin arg
        printfn "%s in Pig Latin is: %s" arg newArg

    0

È ora possibile eseguire l'app console dalla riga di comando:

dotnet run apple banana

Si noterà che restituisce lo stesso risultato del file di script, ma questa volta come programma in esecuzione.

Risoluzione dei problemi relativi a Ionide

Ecco alcuni modi per risolvere alcuni problemi che potrebbero verificarsi:

  1. Per ottenere le funzionalità di modifica del codice di Ionide, i file F# devono essere salvati su disco e all'interno di una cartella aperta nell'area di lavoro di Visual Studio Code.
  2. Se sono state apportate modifiche al sistema o sono stati installati prerequisiti Ionide con Visual Studio Code aperto, riavviare Visual Studio Code.
  3. Se nelle directory del progetto sono presenti caratteri non validi, Ionide potrebbe non funzionare. Rinomina le directory del progetto se questo è il caso.
  4. Se nessuno dei comandi Ionide funziona, controllare tasti di scelta rapida di Visual Studio Code per verificare se si esegue l'override di tali comandi per errore.
  5. Se Ionide non funziona sul tuo computer e nessuna delle soluzioni sopra indicate ha risolto il problema, prova a rimuovere la directory ionide-fsharp sul tuo computer e reinstallare la suite dei plug-in.
  6. Se il caricamento di un progetto non riesce (come mostrato in Esplora soluzioni di F#), fare clic con il pulsante destro del mouse su quel progetto e selezionare Visualizza dettagli per ottenere ulteriori informazioni di diagnostica.

Ionide è un progetto open source creato e gestito dai membri della community F#. Segnalare problemi e collaborare al repository GitHub ionide-vscode-fsharp.

È anche possibile richiedere ulteriore assistenza agli sviluppatori Ionide e alla community di F# nel canale Ionide Gitter .

Passaggi successivi

Per altre informazioni su F# e sulle funzionalità del linguaggio, vedere Tour of F#.