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 poziomu 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# to .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 Narzędzia, wybierz pozycję Opcje, rozwiń węzeł Narzędzia języka F#, a następnie wybierz pozycję F# Interactive.

Gdzie listy są wyświetlane w argumentach opcji interaktywnych języka F#, elementy listy są oddzielone ś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órego 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.
--codepage:<int> Tak samo jak opcja kompilatora fsc.exe . Aby uzyskać więcej informacji, zobacz Opcje kompilatora.
--consolecolors[+|-] Zwraca komunikaty ostrzegawcze i komunikaty o błędach w kolorze.
**--compilertool:<extensionsfolder> Odwołanie do zestawu lub katalogu zawierającego narzędzie czasu projektowania (krótki formularz: -t).
--crossoptimize[+|-] Włączanie lub wyłączanie optymalizacji między modułami.
--debug[+|-]

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

-g[+|-]

-g:[full|pdbonly|portable|embedded]
Tak samo jak opcja kompilatora fsc.exe . Aby uzyskać więcej informacji, zobacz Opcje kompilatora.
--define:<string> 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# zakończenie działania po załadowaniu plików lub uruchomieniu pliku skryptu podanego 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.
--Pomoc

-?
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:<warning-list> Tak samo jak opcja kompilatora fsc.exe . Aby uzyskać więcej informacji, zobacz Opcje kompilatora.
--optimize[+|-] 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).
--Ciche Pomiń dane wyjściowe interakcyjne języka F# na strumień stdout .
--quotations-debug Określa, że dodatkowe informacje debugowania powinny być emitowane dla wyrażeń, które pochodzą z literałów cudzysłowu języka F# i odzwierciedlone definicje. Informacje o debugowaniu są dodawane do atrybutów niestandardowych węzła drzewa wyrażeń języka F#. Zobacz Cudzysłów kodu i expr.CustomAttributes.
--readline[+|-] Włączanie lub wyłączanie uzupełniania kart w trybie interaktywnym.
--reference:<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 tail IL, co powoduje ponowne użycie ramki stosu dla funkcji rekursywnych ogona. Ta opcja jest domyślnie włączona.
--targetprofile:<string> 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.
--warn:<warning-level> 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[+|-]:<int-list> Tak samo jak opcja kompilatora fsc.exe . Aby uzyskać więcej informacji, zobacz Opcje kompilatora.

Interaktywne drukowanie strukturalne języka F#

Język F# Interactive (dotnet fsi) używa rozszerzonej wersji formatowania zwykłego tekstu do wartości raportu.

  1. Obsługiwane są wszystkie funkcje formatowania zwykłego %A 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 fsi obiektu .

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ą polecenia AddPrinter i AddPrintTransformer

Drukowanie w interaktywnych danych wyjściowych języka F# można dostosować przy użyciu poleceń 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])

Zostaną zwrócone następujące dane wyjściowe:

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

Jeśli funkcja transformatora przekazana do fsi.AddPrintTransformer zwraca nullwartość , funkcja przekształcania 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"

Zostaną zwrócone następujące dane wyjściowe:

val y : string = ["quack"; "quack"; "quack"]
Nazwa opis
Opcje kompilatora Opisuje opcje wiersza polecenia dostępne dla kompilatora języka F#, fsc.exe.