Opcje interakcyjne języka F#
W tym artykule opisano opcje wiersza polecenia obsługiwane przez język F# Interactive, fsi.exe
. F# Interactive akceptuje wiele z tych samych opcji wiersza polecenia co kompilator języka F#, ale akceptuje również niektóre dodatkowe opcje.
Używanie języka F# Interactive do obsługi skryptów
Program F# Interactive, dotnet fsi
, można uruchomić interaktywnie lub można go uruchomić z wiersza polecenia, aby uruchomić skrypt. Składnia wiersza polecenia to
dotnet fsi [options] [ script-file [arguments] ]
Rozszerzenie pliku dla plików skryptów języka F# jest .fsx
.
Tabela opcji interaktywnych języka F#
Poniższa tabela zawiera podsumowanie opcji obsługiwanych przez język F# Interactive. Te opcje można ustawić w wierszu polecenia lub za pomocą środowiska IDE programu Visual Studio. Aby ustawić te opcje w środowisku IDE programu Visual Studio, otwórz menu Tools, wybierz pozycję Options, rozwiń węzeł F# Tools, a następnie wybierz pozycję F# Interactive.
Gdzie listy są wyświetlane w argumentach opcji interaktywnych języka F#, elementy listy są rozdzielane średnikami (;
).
Opcja | Opis |
---|---|
-- | Służy do poinstruowania F# Interactive, aby traktować pozostałe argumenty jako argumenty wiersza polecenia do programu lub skryptu języka F#, do których można uzyskać dostęp w kodzie przy użyciu listy fsi.CommandLineArgs. |
— sprawdzone[+|-] | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--checknulls[+|-] | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--codepage:<int> | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--consolecolors[+|-] | Wyświetla komunikaty ostrzegawcze i błędy w kolorze. |
**--compilertool:<folder rozszerzeń> | Odwołaj się do zestawu lub katalogu zawierającego narzędzie czasu projektowania (krótka forma: -t). |
--crossoptimize[+|-] | Włączanie lub wyłączanie optymalizacji między modułami. |
--debugowanie[+|-] — debugowanie:[pełny|pdbonly|przenośne|osadzone] -g[+|-] -g:[pełne|pdbonly|przenośne|osadzone] |
Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--define: ciąg<> | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
- deterministyczne[+|-] | Tworzy zestaw deterministyczny (w tym identyfikator GUID wersji modułu i sygnaturę czasową). |
--exec | Nakazuje programowi F# interaktywne wyjście z programu po załadowaniu plików lub uruchomieniu pliku skryptu określonego w wierszu polecenia. |
--fullpaths | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--gui[+|-] | Włącza lub wyłącza pętlę zdarzeń formularzy systemu Windows. Wartość domyślna jest włączona. |
--pomocy -? |
Służy do wyświetlania składni wiersza polecenia i krótkiego opisu każdej opcji. |
--lib:<folder-list> -I:<folder-list> |
Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--load: nazwa pliku<> | Kompiluje dany kod źródłowy podczas uruchamiania i ładuje skompilowane konstrukcje języka F# do sesji. |
--mlcompatibility | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--noframework | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz Opcje kompilatora |
--nologo | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--nowarn:<listy ostrzeżeń> | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
— optymalizowanie[+|-] | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--preferreduilang:<lang> | Określa preferowaną nazwę kultury języka wyjściowego (na przykład es-ES, ja-JP). |
--quiet | Wycisz dane wyjściowe aplikacji F# Interactive do strumienia stdout. |
--quotations-debug | Określa, że dodatkowe informacje debugowania powinny być emitowane dla wyrażeń, które pochodzą z literałów cytatów F# i odwzorowanych definicji. Do atrybutów niestandardowych węzła drzewa wyrażeniowego F# dodawane są informacje debugowania. Zobacz Cytaty kodu i expr.CustomAttributes. |
--readline[+|-] | Włączanie lub wyłączanie uzupełniania przy użyciu klawisza Tab w trybie interaktywnym. |
— odwołanie:<nazwa pliku> -r: nazwa pliku<> |
Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--tailcalls[+|-] | Włącz lub wyłącz użycie instrukcji IL tail, co powoduje ponowne użycie ramki stosu dla funkcji z rekurencją ogonową. Ta opcja jest domyślnie włączona. |
--targetprofile:<ciąg> | Określa docelowy profil platformy tego zestawu. Prawidłowe wartości to mscorlib , netcore lub netstandard . Wartość domyślna to mscorlib . |
—-use: nazwa pliku<> | Informuje interpretera, aby używał danego pliku podczas uruchamiania jako początkowe dane wejściowe. |
--utf8output | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
— poziom ostrzeżenia:<> | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--warnaserror[+|-] | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
--warnaserror[+|-]:<lista intów> | Tak samo jak opcja kompilatora fsc.exe. Aby uzyskać więcej informacji, zobacz opcje kompilatora . |
Interaktywne formatowanie strukturalne w F#
F# Interactive (dotnet fsi
) używa rozszerzonej wersji ustrukturyzowanego formatowania zwykłego tekstu do raportowania wartości.
Obsługiwane są wszystkie funkcje
%A
formatowania zwykłego tekstu, a niektóre z nich można dodatkowo dostosowywać.Drukowanie jest kolorowane, jeśli kolory są obsługiwane przez konsolę wyjściową.
Limit jest umieszczany na długości wyświetlanych ciągów, chyba że jawnie ocenisz ten ciąg.
Zestaw ustawień możliwych do zdefiniowania użytkownika jest dostępny za pośrednictwem obiektu
fsi
.
Dostępne ustawienia umożliwiające dostosowanie drukowania zwykłego tekstu dla zgłoszonych wartości to:
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
Dostosowywanie za pomocą AddPrinter
i AddPrintTransformer
Drukowanie w F# Interactive można dostosować za pomocą fsi.AddPrinter
i fsi.AddPrintTransformer
.
Pierwsza funkcja daje tekst zastępujący drukowanie obiektu. Druga funkcja zwraca obiekt zastępczy do wyświetlenia. Rozważmy na przykład następujący kod języka F#:
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" }
Jeśli wykonasz przykład w języku F# Interactive, dane wyjściowe będą wyświetlane na podstawie zestawu opcji formatowania. W takim przypadku ma to wpływ na formatowanie daty i godziny:
type DateAndLabel =
{ Date: DateTime
Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
Label = "New Year" }
fsi.AddPrintTransformer
można użyć do nadania obiektu zastępczego do drukowania:
type MyList(values: int list) =
member _.Values = values
fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)
let x = MyList([1..10])
Te dane wyjściowe:
val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
Jeśli funkcja transformera przekazana do fsi.AddPrintTransformer
zwraca null
, to transformacja wydruku jest ignorowana.
Może to służyć do filtrowania dowolnej wartości wejściowej, zaczynając od typu obj
. Na przykład:
fsi.AddPrintTransformer(fun (x:obj) ->
match x with
| :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
| _ -> null)
let y = "beep"
To daje:
val y : string = ["quack"; "quack"; "quack"]
Tematy pokrewne
Tytuł | Opis |
---|---|
opcje kompilatora | Opisuje opcje wiersza polecenia dostępne dla kompilatora języka F#, fsc.exe. |