Freigeben über


Erste Schritte mit F# in Visual Studio Code

Sie können F# in Visual Studio Code mit dem Ionide-Plug-In schreiben, um eine plattformübergreifende einfache IDE-Umgebung (Integrated Development Environment) mit IntelliSense und Coderefactorings zu erhalten. Besuchen Sie Ionide.io, um mehr über das Plug-In zu erfahren.

Anmerkung

Stellen Sie vor Beginn sicher, dass Sie sowohl F# als auch das Ionide-Plug-Ininstalliert haben.

Erstellen Sie Ihr erstes Projekt mit Ionide

Um ein neues F#-Projekt zu erstellen, öffnen Sie eine Befehlszeile, und erstellen Sie ein neues Projekt mit der .NET CLI:

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

Wechseln Sie nach Abschluss des Vorgangs zum Verzeichnis des Projekts, und öffnen Sie Visual Studio Code:

cd FirstIonideProject
code .

Nachdem das Projekt in Visual Studio Code geladen wurde, sollte der F#-Bereich „Projektmappen-Explorer“ links im geöffneten Fenster zu sehen sein. Dies bedeutet, dass Ionide das gerade erstellte Projekt erfolgreich geladen hat. Sie können vor diesem Zeitpunkt Code im Editor schreiben, aber sobald dies geschieht, ist der Ladevorgang abgeschlossen.

Schreiben Ihres ersten Skripts

Nachdem Sie Visual Studio Code für die Verwendung von .NET Core-Skripts konfiguriert haben, navigieren Sie in Visual Studio Code zur Explorer-Ansicht, und erstellen Sie eine neue Datei. Nennen Sie ihn MyFirstScript.fsx.

Fügen Sie nun den folgenden Code hinzu:

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"

Diese Funktion konvertiert ein Wort in eine Form von Pig Latin. Der nächste Schritt besteht darin, sie mit F# Interactive (FSI) auszuwerten.

Markieren Sie die gesamte Funktion (sie sollte 11 Zeilen aufweisen). Sobald sie markiert ist, drücken Sie bei gedrückter ALT-TASTE die EINGABETASTE. Sie werden feststellen, dass ein Terminalfenster unten auf dem Bildschirm angezeigt wird, und es sollte ähnlich wie folgt aussehen:

Beispiel einer F# Interactive-Ausgabe mit Ionide

Dies hat drei Dinge getan:

  1. Der FSI-Prozess wurde gestartet.
  2. Der markierte Code wurde an den FSI-Prozess gesendet.
  3. Der FSI-Prozess hat den von Ihnen gesendeten Code ausgewertet.

Da es sich bei dem, was Sie gesendet haben, um eine Funktion handelt, können Sie diese jetzt mit FSI aufrufen! Geben Sie im interaktiven Fenster Folgendes ein:

toPigLatin "banana";;

Sie sollten das folgende Ergebnis sehen:

val it: string = "ananabay"

Jetzt versuchen wir es mit einem Vokal als ersten Buchstaben. Geben Sie Folgendes ein:

toPigLatin "apple";;

Das folgende Ergebnis wird angezeigt:

val it: string = "appleyay"

Die Funktion scheint wie erwartet zu funktionieren. Herzlichen Glückwunsch, Sie haben gerade Ihre erste F#-Funktion in Visual Studio Code geschrieben und mit FSI ausgewertet!

Anmerkung

Wie Sie vielleicht bemerkt haben, werden die Zeilen in FSI mit ;; beendet. Dies liegt daran, dass Sie mit FSI mehrere Zeilen eingeben können. Die ;; am Ende teilt FSI mit, wann der Code abgeschlossen ist.

Erklärung des Codes

Wenn Sie nicht sicher sind, was der Code tatsächlich tut, finden Sie hier eine schrittweise Anleitung.

Wie Sie sehen können, ist toPigLatin eine Funktion, die ein Wort als Eingabe verwendet und in eine Pig-Latin Darstellung dieses Worts konvertiert. Die Regeln hierfür sind wie folgt:

Wenn das erste Zeichen in einem Wort mit einem Vokal beginnt, fügen Sie "yay" am Ende des Worts hinzu. Wenn es nicht mit einem Vokal beginnt, verschieben Sie dieses erste Zeichen an das Ende des Worts und fügen Sie "ay" hinzu.

Möglicherweise haben Sie Folgendes in FSI bemerkt:

val toPigLatin: word: string -> string

Dies besagt, dass toPigLatin eine Funktion ist, die eine string als Eingabe (word) einnimmt und eine weitere stringzurückgibt. Dies wird als die Typsignatur der Funktionbezeichnet, ein grundlegender Bestandteil von F#, der entscheidend ist, um F#-Code zu verstehen. Sie werden dies auch bemerken, wenn Sie mit dem Mauszeiger auf die Funktion in Visual Studio Code zeigen.

Im Körper der Funktion werden Ihnen zwei unterschiedliche Teile auffallen:

  1. Eine innere Funktion, die als isVowelbezeichnet wird, bestimmt, ob ein bestimmtes Zeichen (c) ein Vokal ist, indem überprüft wird, ob es mit einem der bereitgestellten Muster über Musterabgleichübereinstimmt:

    let isVowel (c: char) =
        match c with
        | 'a' | 'e' | 'i' | 'o' | 'u'
        | 'A' | 'E' | 'I' | 'O' | 'U' -> true
        |_ -> false
    
  2. Ein if..then..else Ausdruck, der überprüft, ob das erste Zeichen ein Vokal ist, und erstellt einen Rückgabewert aus den Eingabezeichen basierend darauf, ob das erste Zeichen ein Vokal war oder nicht:

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

Der Ablauf von toPigLatin ist also wie folgt:

Überprüfen Sie, ob das erste Zeichen des Eingabeworts ein Vokal ist. Falls ja, „yay“ am Ende des Worts anfügen. Andernfalls dieses erste Zeichen an das Ende des Worts verschieben und „ay“ anfügen.

Als Letztes ist Folgendes zu beachten: In F# gibt es keine explizite Anweisung, die von der Funktion zurückgegeben werden soll. Dies liegt daran, dass F# ausdrucksbasiert ist und der letzte Ausdruck im Textkörper einer Funktion den Rückgabewert dieser Funktion bestimmt. Da if..then..else selbst ein Ausdruck ist, bestimmt die Auswertung des Rumpfs des then-Blocks oder des Rumpfs des else-Blocks den Wert, der von der toPigLatin-Funktion zurückgegeben wird.

Verwandle die Konsolen-App in einen Pig Latin-Generator

In den vorherigen Abschnitten in diesem Artikel wurde ein allgemeiner erster Schritt beim Schreiben von F#-Code veranschaulicht: das Schreiben einer ersten Funktion und die interaktive Ausführung mit FSI. Dies wird als REPL-gesteuerte Entwicklung bezeichnet, wobei REPL- für "Read-Evaluate-Print Loop" steht. Dies ist eine hervorragende Möglichkeit, mit Funktionen zu experimentieren, bis Sie ein brauchbares Ergebnis erhalten.

Der nächste Schritt in der REPL-basierten Entwicklung besteht darin, funktionierenden Code in eine F#-Implementierungsdatei zu verschieben. Sie kann dann vom F#-Compiler in eine Assembly kompiliert werden, die ausgeführt werden kann.

Öffnen Sie zunächst die datei Program.fs, die Sie zuvor mit der .NET CLI erstellt haben. Sie werden feststellen, dass bereits Code vorhanden ist.

Erstellen Sie als Nächstes ein neues module namens PigLatin, und kopieren Sie die zuvor erstellte toPigLatin-Funktion in das Modul:

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"

Dieses Modul sollte über der main-Funktion und unterhalb der open System-Deklaration liegen. Die Reihenfolge der Deklarationen ist in F# wichtig. Daher müssen Sie die Funktion definieren, bevor Sie sie in einer Datei aufrufen.

Rufen Sie nun in der main-Funktion Ihre Pig Latin-Generatorfunktion für die folgenden Argumente auf:

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

    0

Jetzt können Sie Ihre Konsolen-App über die Befehlszeile ausführen:

dotnet run apple banana

Und Sie werden sehen, dass es dasselbe Ergebnis wie Ihre Skriptdatei ausgibt, aber diesmal als laufendes Programm!

Problembehandlung für Ionide

Hier sind einige Möglichkeiten, wie Sie bestimmte Probleme beheben können, die möglicherweise auftreten:

  1. Um die Codebearbeitungsfeatures von Ionide abzurufen, müssen Ihre F#-Dateien auf dem Datenträger und in einem Ordner gespeichert werden, der im Visual Studio Code-Arbeitsbereich geöffnet ist.
  2. Wenn Sie Änderungen an Ihrem System vorgenommen oder Voraussetzungen für Ionide installiert haben, während Visual Studio Code geöffnet war, starten Sie Visual Studio Code neu.
  3. Wenn In Ihren Projektverzeichnissen ungültige Zeichen vorhanden sind, funktioniert Ionide möglicherweise nicht. Benennen Sie Ihre Projektverzeichnisse um, wenn dies der Fall ist.
  4. Wenn keiner der Ionide-Befehle funktioniert, überprüfen Sie Ihre Visual Studio Code-Schlüsselbindungen, um festzustellen, ob Sie sie versehentlich überschreiben.
  5. Wenn Ionide auf Ihrem Rechner nicht funktioniert und keine der oben genannten Lösungen Ihr Problem behoben hat, versuchen Sie, das Verzeichnis ionide-fsharp auf Ihrem Rechner zu entfernen und die Plugin-Suite neu zu installieren.
  6. Wenn ein Projekt nicht geladen werden konnte (der F#-Projektmappen-Explorer zeigt dies), klicken Sie mit der rechten Maustaste auf dieses Projekt, und klicken Sie auf Details anzeigen, um weitere Diagnoseinformationen zu erhalten.

Ionide ist ein Open-Source-Projekt, das von Mitgliedern der F#-Community erstellt und verwaltet wird. Im GitHub-Repository ionide-vscode-fsharp können Sie Probleme melden oder Beiträge beisteuern.

Sie können auch weitere Hilfe von den Ionide-Entwicklern und der F#-Community im Ionide Gitter Kanalanfordern.

Nächste Schritte

Weitere Informationen zu F# und den Features der Sprache finden Sie unter Tour of F#.