F# Interactive-Optionen

In diesem Artikel werden die von F# Interactive (fsi.exe) unterstützten Befehlszeilenoptionen beschrieben. F# Interactive akzeptiert viele Befehlszeilenoptionen des F#-Compilers, jedoch auch einige zusätzliche Optionen.

Verwenden von F# Interactive für die Skripterstellung

F# Interactive dotnet fsi kann interaktiv oder von der Befehlszeile aus gestartet werden, um ein Skript auszuführen. Die Befehlszeilensyntax lautet wie folgt:

dotnet fsi [options] [ script-file [arguments] ]

Die Dateierweiterung für F#-Skriptdateien lautet .fsx.

Tabelle der F# Interactive-Optionen

In der folgenden Tabelle werden die von F# Interactive unterstützten Optionen zusammengefasst. Sie können diese Optionen an der Befehlszeile oder in der Visual Studio-IDE festlegen. Um diese Optionen in der Visual Studio-IDE festzulegen, öffnen Sie das Menü Extras, wählen Sie Optionen, erweitern Sie anschließend den Knoten F#-Tools, und wählen Sie dann F# Interactive.

Wenn F# Interactive-Optionsargumente Listen enthalten, werden Listenelemente durch Semikolons (;) getrennt.

Option Beschreibung
-- Wird verwendet, um F# Interactive anzuweisen, restliche Argumente als Befehlszeilenargumente des F#-Programms oder -Skripts zu behandeln, auf die Sie in Code mit der Liste fsi.commandLineArgs zugreifen können.
--checked[+|-] Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--codepage:<int> Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--consolecolors[+|-] Gibt Warnungen und Fehlermeldungen in Farbe aus.
**--compilertool:<extensionsfolder> Verweisen Sie auf eine Assembly oder ein Verzeichnis mit einem Entwurfszeittool (Kurzform: -t).
--crossoptimize[+|-] Aktiviert oder deaktiviert modulübergreifende Optimierungen.
--debug[+|-]

--debug:[full|pdbonly|portable|embedded]

-g[+|-]

-g:[full|pdbonly|portable|embedded]
Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--define:<string> Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--deterministic[+|-] Generiert eine deterministische Assembly (einschließlich Modulversions-GUID und Zeitstempel).
--exec Weist das Beenden von F# Interactive an, nachdem die Dateien geladen wurden oder die in der Befehlszeile angegebene Skriptdatei ausgeführt wurde.
--fullpaths Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--gui[+|-] Aktiviert oder deaktiviert die Windows Forms-Ereignisschleife. Die Option ist standardmäßig aktiviert.
--help

-?
Wird verwendet, um die Befehlszeilensyntax und eine kurze Beschreibung jeder Option anzuzeigen.
--lib:<folder-list>

-I:<folder-list>
Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--load:<filename> Kompiliert beim Start den angegebenen Quellcode und lädt die kompilierten F#-Konstrukte in die Sitzung.
--mlcompatibility Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--noframework Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen
--nologo Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--nowarn:<warning-list> Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--optimize[+|-] Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--preferreduilang:<lang> Gibt den Namen der bevorzugten Ausgabesprachenkultur an (z. B. es-ES, ja-JP).
--quiet Unterdrückt die Ausgabe von F# Interactive an den stdout-Stream.
--quotations-debug Gibt an, dass zusätzliche Debuginformationen für Ausdrücke ausgegeben werden, die von F#-Quotation-Literalen und reflektierten Definitionen abgeleitet werden. Die Debuginformationen werden zu den benutzerdefinierten Attributen eines F#-Ausdrucksstrukturknotens hinzugefügt. Weitere Informationen finden Sie unter Codezitate sowie unter Expr.CustomAttributes.
--readline[+|-] Aktiviert oder deaktiviert die Vervollständigung mit der TAB-TASTE im interaktiven Modus.
--reference:<filename>

-r:<filename>
Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--tailcalls[+|-] Aktiviert oder deaktiviert die Verwendung der Tail-IL-Anweisung, die für endrekursive Funktionen die Wiederverwendung des Stapelrahmens verursacht. Diese Option ist standardmäßig aktiviert.
--targetprofile:<string> Gibt das Zielframeworkprofil dieses Assemblys an. Gültige Werte sind mscorlib, netcore oder netstandard. Der Standardwert lautet mscorlib.
--use:<filename> Weist den Interpreter an, beim Start die angegebene Datei als anfängliche Eingabe zu verwenden.
--utf8output Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--warn:<warning-level> Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--warnaserror[+|-] Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.
--warnaserror[+|-]:<int-list> Identisch mit der fsc.exe-Compileroption. Weitere Informationen finden Sie unter Compileroptionen.

Strukturierte Ausgabe in F# Interactive

F# Interactive (dotnet fsi) verwendet eine erweiterte Version der strukturierten Nur-Text-Formatierung, um Werte zu melden.

  1. Alle Features der %A Nur-Text-Formatierung werden unterstützt und einige sind zusätzlich anpassbar.

  2. Der Druck wird koloriert, wenn Farben von der Ausgabekonsole unterstützt werden.

  3. Für die Länge der angezeigten Zeichenfolgen wird ein Grenzwert festgelegt, es sei denn, Sie werten diese Zeichenfolge explizit aus.

  4. Über das fsi-Objekt stehen eine Reihe von vom Benutzer definierbaren Einstellungen zur Verfügung.

Die verfügbaren Einstellungen zum Anpassen des Nur-Textdrucks für gemeldete Werte sind:

open System.Globalization

fsi.FormatProvider <- CultureInfo("de-DE")  // control the default culture for primitives

fsi.PrintWidth <- 120        // Control the width used for structured printing

fsi.PrintDepth <- 10         // Control the maximum depth of nested printing

fsi.PrintLength <- 10        // Control the length of lists and arrays

fsi.PrintSize <- 100         // Control the maximum overall object count

fsi.ShowProperties <- false  // Control whether properties of .NET objects are shown by default

fsi.ShowIEnumerable <- false // Control whether sequence values are expanded by default

fsi.ShowDeclarationValues <- false // Control whether values are shown for declaration outputs

Anpassen mit AddPrinter und AddPrintTransformer

Das Drucken in F# Interactive-Ausgaben kann mithilfe von fsi.AddPrinter und fsi.AddPrintTransformerangepasst werden. Die erste Funktion gibt Text an, um das Drucken eines Objekts zu ersetzen. Die zweite Funktion gibt ein Ersatzobjekt zurück, das stattdessen angezeigt werden soll. Sehen Sie sich als Beispiel den folgenden F#-Code an:

open System

fsi.AddPrinter<DateTime>(fun dt -> dt.ToString("s"))

type DateAndLabel =
    { Date: DateTime
      Label: string  }

let newYearsDay1999 =
    { Date = DateTime(1999, 1, 1)
      Label = "New Year" }

Wenn Sie das Beispiel in F# Interactive ausführen, wird es basierend auf dem Formatierungsoptionssatz ausgegeben. In diesem Fall wirkt sich dies auf die Formatierung von Datum und Uhrzeit aus:

type DateAndLabel =
  { Date: DateTime
    Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
                                       Label = "New Year" }

fsi.AddPrintTransformer kann verwendet werden, um ein Ersatzobjekt zum Drucken zu vergeben:

type MyList(values: int list) =
    member _.Values = values

fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)

let x = MyList([1..10])

Folgendes wird ausgegeben:

val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]

Wenn die an fsi.AddPrintTransformer übergebene Transformatorfunktion null zurückgibt, wird der Drucktransformator ignoriert. Dies kann verwendet werden, um einen beliebigen Eingabewert zu filtern, indem sie mit dem Typ obj beginnen. Zum Beispiel:

fsi.AddPrintTransformer(fun (x:obj) ->
    match x with
    | :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
    | _ -> null)

let y = "beep"

Folgendes wird ausgegeben:

val y : string = ["quack"; "quack"; "quack"]
Titel BESCHREIBUNG
Compileroptionen Beschreibt für den F#-Compiler (fsc.exe) verfügbare Befehlszeilenoptionen.