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.
Stellen Sie zunächst sicher, dass F# und das Ionide-Plug-In ordnungsgemäß installiert sind.
Erstellen Ihres ersten Projekts mit Ionide
Zum Erstellen eines neuen F#-Projekts öffnen Sie eine Befehlszeile und erstellen mit der .NET CLI ein neues Projekt:
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 soeben 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 .NET Core-Skripts konfiguriert haben, navigieren Sie in Visual Studio Code zur Ansicht „Explorer“ und erstellen eine neue Datei. Nennen Sie sie MyFirstScript.fsx.
Fügen Sie ihr nun 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. Am unteren Bildschirmrand wird ein Terminalfenster angezeigt, das in etwa wie folgt aussehen sollte:
Dadurch wurden drei Schritte ausgeführt:
- Der FSI-Prozess wurde gestartet.
- Der markierte Code wurde an den FSI-Prozess gesendet.
- Der FSI-Prozess hat den von Ihnen gesendeten Code ausgewertet.
Da der Inhalt des Versands eine Funktion war, können Sie diese Funktion jetzt mit FSI aufrufen! Führen Sie im interaktiven Fenster Folgendes aus:
toPigLatin "banana";;
Das folgende Ergebnis wird angezeigt:
val it: string = "ananabay"
Versuchen wir es nun 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!
Hinweis
Wie Sie vielleicht bemerkt haben, werden die Zeilen in FSI mit ;;
beendet. Das liegt daran, dass FSI die Eingabe mehrerer Zeilen zulässt. ;;
am Ende zeigt FSI an, wenn der Code komplett ist.
Erläutern des Codes
Wenn Sie nicht sicher sind, was der Code tatsächlich tut, finden Sie hier eine Schritt-für-Schritt-Anleitung.
Wie Sie sehen können, ist toPigLatin
eine Funktion, die ein Wort als Eingabe verwendet und es in eine Pig Latin-Darstellung dieses Worts konvertiert. Die Regeln dafür sind wie folgt:
Wenn das erste Zeichen in einem Wort mit einem Vokal beginnt, fügen Sie am Ende des Worts „yay“ hinzu. Wenn es nicht mit einem Vokal beginnt, verschieben Sie dieses erste Zeichen an das Ende des Worts, und fügen Sie „ay“ an.
Möglicherweise haben Sie in FSI Folgendes bemerkt:
val toPigLatin: word: string -> string
Dies besagt, dass toPigLatin
eine Funktion ist, die string
als Eingabe (genannt word
) akzeptiert und string
zurückgibt. Dies wird als Typsignatur der Funktion bezeichnet, ein grundlegendes Element von F#, das für das Verständnis von F#-Code entscheidend ist. Sie werden diese 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:
Eine innere Funktion namens
isVowel
, die bestimmt, ob ein bestimmtes Zeichen (c
) ein Vokal ist, indem geprüft wird, ob es per Musterabgleich mit einem der bereitgestellten Muster übereinstimmt:let isVowel (c: char) = match c with | 'a' | 'e' | 'i' | 'o' | 'u' | 'A' | 'E' | 'I' | 'O' | 'U' -> true |_ -> false
Ein
if..then..else
-Ausdruck, der überprüft, ob das erste Zeichen ein Vokal ist und einen Rückgabewert anhand der Eingabezeichen basierend darauf erstellt, 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, 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, der im Text einer Funktion ausgewertet wird, den Rückgabewert dieser Funktion bestimmt. Da if..then..else
selbst ein Ausdruck ist, bestimmt die Auswertung des Körpers des Blocks then
oder else
den Wert, den die Funktion toPigLatin
zurückgibt.
Umwandeln der Konsolen-App in einen Pig Latin-Generator
In den vorherigen Abschnitten dieses Artikels wurde ein allgemeiner erster Schritt beim Schreiben von F#-Code veranschaulicht: Schreiben einer ersten Funktion mit interaktiver Ausführung mithilfe von 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 bei der REPL-gesteuerten Entwicklung besteht darin, funktionierenden Code in eine F#-Implementierungsdatei zu verschieben. Diese kann dann vom F#-Compiler in eine ausführbare Assembly kompiliert werden.
Ö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 sich oberhalb der main
-Funktion und unterhalb der open System
-Deklaration befinden. Die Reihenfolge von Deklarationen ist in F# wichtig. Daher müssen Sie die Funktion definieren, ehe 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
Sie werden sehen, dass die Ausgabe das gleiche Ergebnis liefert wie Ihre Skriptdatei, aber diesmal als ausgeführtes Programm!
Problembehandlung für Ionide
Es folgen einige Möglichkeiten, bestimmte möglicherweise auftretende Probleme zu beheben:
- Um die Codebearbeitungsfunktionen von Ionide nutzen zu können, müssen Ihre F#-Dateien auf dem Datenträger und in einem Ordner gespeichert werden, der im Visual Studio Code-Arbeitsbereich geöffnet ist.
- Wenn Sie Änderungen am System vorgenommen oder die erforderlichen Ionide-Komponenten bei geöffnetem Visual Studio Code installiert haben, starten Sie Visual Studio Code neu.
- Wenn ungültige Zeichen in Ihren Projektverzeichnissen enthalten sind, funktioniert Ionide möglicherweise nicht. Benennen Sie Ihre Projektverzeichnisse um, wenn dies der Fall ist.
- Wenn keiner der Ionide-Befehle funktioniert, überprüfen Sie Ihre Visual Studio Code-Schlüsselbindungen, um festzustellen, ob Sie sie versehentlich überschreiben.
- Wenn Ionide auf Ihrem Computer nicht funktioniert und das Problem mit keinem der genannten Vorschläge behoben wurde, versuchen Sie, das Verzeichnis
ionide-fsharp
auf Ihrem Computer zu entfernen und die Plug-In-Sammlung erneut zu installieren. - Wenn ein Projekt nicht geladen werden konnte (was im Projektmappen-Explorer von F# angezeigt wird), klicken Sie mit der rechten Maustaste auf dieses Projekt, und klicken Sie dann auf Details anzeigen, um weitere Diagnoseinformationen zu erhalten.
Ionide ist ein Open-Source-Projekt, das von Mitgliedern der F#-Community erstellt und gepflegt wird. Im GitHub-Repository ionide-vscode-fsharp können Sie Probleme melden oder Beiträge beisteuern.
Sie können im Ionide Gitter-Kanal auch die Ionide-Entwickler und F#-Community um weitere Hilfe bitten.
Nächste Schritte
Weitere Informationen zu F# und den Features der Sprache finden Sie unter Tour of F#.