Udostępnij za pośrednictwem


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, netcorelub 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.

  1. Obsługiwane są wszystkie funkcje %A formatowania zwykłego tekstu, a niektóre z nich można dodatkowo dostosowywać.

  2. Drukowanie jest kolorowane, jeśli kolory są obsługiwane przez konsolę wyjściową.

  3. Limit jest umieszczany na długości wyświetlanych ciągów, chyba że jawnie ocenisz ten ciąg.

  4. 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"]
Tytuł Opis
opcje kompilatora Opisuje opcje wiersza polecenia dostępne dla kompilatora języka F#, fsc.exe.