F# Interactive-Referenz (fsi.exe)
F# Interactive (fsi.exe) wird zum interaktiven Ausführen von F#-Code in der Konsole oder zum Ausführen von F#-Skripts verwendet. Dies bedeutet, dass F# Interactive eine REPL (Read, Evaluate, Print Loop = Lesen-Auswerten-Drucken-Schleife) für F# ausführt.
Interaktive Programmierung mit F#
Mit F# Interactive kann Code in der Konsole oder in einem Fenster in Visual Studio geschrieben werden.
Starten Sie "fsi.exe", um F# Interactive in der Konsole auszuführen. Informationen zu verfügbaren Befehlszeilenoptionen finden Sie unter F# Interactive-Optionen.
Zum Ausführen von F# Interactive über Visual Studio 2010 können Sie auf die entsprechende Symbolleistenschaltfläche F# Interactive klicken oder die Tastenkombination Strg+Alt+F verwenden. Dadurch wird das Interactive-Fenster geöffnet, ein Toolfenster, in dem eine F# Interactive-Sitzung ausgeführt wird. Sie können auch Code auswählen, den Sie im Interactive-Fenster ausführen möchten, und die Tastenkombination ALT+EINGABE drücken. F# Interactive wird in einem Toolfenster mit der Bezeichnung F# Interactive gestartet.
Unabhängig davon, ob Sie die Konsole oder Visual Studio 2010 verwenden, wird eine Eingabeaufforderung angezeigt, und der Interpreter erwartet Ihre Eingabe. Sie können Code auf die gleiche Weise wie in einer Codedatei eingeben. Geben Sie zum Kompilieren und Ausführen des Codes zwei Semikolons (;;) ein, um eine oder mehrere Zeilen der Eingabe zu beenden.
F# Interactive beginnt mit der Kompilierung des Codes, und wenn der Code erfolgreich kompiliert wurde, führt F# Interactive den Code aus und gibt die Signatur der kompilierten Typen und Werte aus. Wenn Fehler auftreten, gibt der Interpreter die Fehlermeldungen aus.
In der gleichen Sitzung eingegebener Code kann auf alle zuvor eingegebenen Konstrukte zugreifen. Daher können Sie Programme erstellen. Ein umfangreicher Puffer im Toolfenster ermöglicht es Ihnen, den Code bei Bedarf in eine Datei zu kopieren.
In Visual Studio wird F# Interactive unabhängig vom Projekt ausgeführt. Daher können Sie im Projekt definierte Konstrukte nur dann in F# Interactive verwenden, wenn Sie den Code für die Funktion in das Interactive-Fenster kopieren.
Sie können die Befehlszeilenargumente (Optionen) von F# Interactive steuern, indem Sie die Einstellungen anpassen. Wählen Sie im Menü Extras den Eintrag Optionen aus, und erweitern Sie anschließend F#-Tools. Die beiden Einstellungen, die Sie ändern können, sind die Optionen F# Interactive und der Pfad zur ausführbaren Datei fsi.exe. Verwenden Sie diese Einstellungen, wenn Sie die Datei fsi.exe aus einer anderen Version von F# ausführen möchten.
Skripterstellung mit F#
Für Skripts wird die Dateierweiterung .fsx oder .fsscript verwendet. Statt Quellcode zu kompilieren und später die kompilierte Assembly auszuführen, können Sie einfach fsi.exe ausführen und den Dateinamen des Skripts mit dem F#-Quellcode angeben. F# Interactive liest dann den Code und führt ihn in Echtzeit aus.
Unterschiede zwischen interaktiven, Skripterstellungs- und Kompilierungsumgebungen
Wenn Sie Code in F# Interactive kompilieren, unabhängig davon, ob die Ausführung interaktiv oder über ein Skript erfolgt, ist das Symbol INTERACTIVE definiert. Beim Kompilieren von Code im Compiler ist das Symbol COMPILED definiert. Wenn Code im Kompilierungsmodus und interaktiven Modus unterschiedlich sein muss, können Sie mithilfe von Präprozessordirektiven für die bedingte Kompilierung bestimmen, welcher Code verwendet werden soll.
Beim Ausführen von Skripts in F# Interactive sind einige Direktiven verfügbar, die beim Ausführen des Compilers nicht verfügbar sind. In der folgenden Tabelle sind die Direktiven zusammengefasst, die verfügbar sind, wenn Sie F# Interactive verwenden.
Direktive |
Beschreibung |
---|---|
#help |
Zeigt Informationen über verfügbare Direktiven an. |
#I |
Gibt einen Assemblysuchpfad an (in Anführungszeichen). |
#load |
Liest eine Quelldatei, kompiliert sie und führt sie aus. |
#quit |
Beendet eine F# Interactive-Sitzung. |
#r |
Verweist auf eine Assembly. |
#time ["on"|"off"] |
Einzeln angegeben aktiviert bzw. deaktiviert #time die Anzeige von Leistungsinformationen. Wenn die Option aktiviert ist, überwacht F# Interactive die reale Zeit, die CPU-Zeit sowie Garbage Collection-Informationen für jeden Codeabschnitt, der interpretiert und ausgeführt wird. |
Wenn Sie Dateien oder Pfade in F# Interactive angeben, wird ein Zeichenfolgenliteral erwartet. Daher müssen Dateien und Pfade in Anführungszeichen stehen. Es gelten die üblichen Escapezeichen. Zusätzlich können Sie das Zeichen @ verwenden. F# Interactive wird damit angewiesen, eine Zeichenfolge mit einem Pfad als wörtliche Zeichenfolge zu interpretieren. F# Interactive ignoriert in diesem Fall alle Escapezeichen.
Der Kompilierungsmodus und der interaktive Modus unterscheiden sich u. a. durch die Art des Zugriffs auf Befehlszeilenargumente. Verwenden Sie im Kompilierungsmodus GetCommandLineArgs. Verwenden Sie in Skripts fsi.CommandLineArgs.
Im folgenden Code wird das Erstellen einer Funktion veranschaulicht, die die Befehlszeilenargumente in einem Skript liest, und es wird außerdem gezeigt, wie aus einem Skript auf eine andere Assembly verwiesen wird. Die erste Codedatei MyAssembly.fs ist der Code für die Assembly, auf die verwiesen wird. Kompilieren Sie diese Datei mit der Befehlszeile fsc -a MyAssembly.fs, und führen Sie dann die zweite Datei mit der Befehlszeile "fsi --exec file1.fsx test" aus.
// MyAssembly.fs
module MyAssembly
let myFunction x y = x + 2 * y
// file1.fsx
#r "MyAssembly.dll"
printfn "Command line arguments: "
for arg in fsi.CommandLineArgs do
printfn "%s" arg
printfn "%A" (MyAssembly.myFunction 10 40)
Die Ausgabe lautet wie folgt:
file1.fsx
test
60
Verwandte Themen
Titel |
Beschreibung |
---|---|
Beschreibt die Befehlszeilensyntax und Optionen für F# Interactive (fsi.exe). |
|
Beschreibt die beim Ausführen von Code in F# Interactive verfügbare Bibliotheksfunktion. |
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
Oktober 2010 |
Tabelle der unterstützten Direktiven hinzugefügt. |
Informationsergänzung. |