Opzioni interattive F#

Questo articolo descrive le opzioni della riga di comando supportate da F# Interactive, fsi.exe. F# Interactive accetta molte delle stesse opzioni della riga di comando del compilatore F#, ma accetta anche alcune opzioni aggiuntive.

Usare F# Interactive per lo scripting

F# Interactive, dotnet fsi, può essere avviato in modo interattivo oppure può essere avviato dalla riga di comando per eseguire uno script. La sintassi della riga di comando è

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

L'estensione di file per i file di script F# è .fsx.

Tabella delle opzioni interattive F#

La tabella seguente riepiloga le opzioni supportate da F# Interactive. È possibile impostare queste opzioni nella riga di comando o tramite l'IDE di Visual Studio. Per impostare queste opzioni nell'IDE di Visual Studio, aprire il menu Strumenti , selezionare Opzioni, espandere il nodo Strumenti F# e quindi selezionare F# Interactive.

Dove gli elenchi vengono visualizzati negli argomenti delle opzioni interattive F#, gli elementi elenco sono separati da punto e virgola (;).

Opzione Descrizione
-- Usato per indicare a F# Interactive di considerare gli argomenti rimanenti come argomenti della riga di comando per il programma o lo script F#, a cui è possibile accedere nel codice usando l'elenco fsi. CommandLineArgs.
--checked[+|-] Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--codepage:<int> Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--consolecolors[+|-] Restituisce messaggi di avviso e di errore a colori.
**--compilertool:<extensionsfolder> Fare riferimento a un assembly o a una directory contenente uno strumento in fase di progettazione (formato breve: -t).
--crossoptimize[+|-] Abilitare o disabilitare le ottimizzazioni tra moduli.
--debug[+|-]

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

-g[+|-]

-g:[full|pdbonly|portable|embedded]
Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--define:<string> Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--deterministic[+|-] Produce un assembly deterministico ,incluso il GUID della versione del modulo e il timestamp.
--Exec Indica a F# interactive di uscire dopo il caricamento dei file o l'esecuzione del file script specificato nella riga di comando.
--fullpaths Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--gui[+|-] Abilita o disabilita il ciclo di eventi Windows Form. Il valore predefinito è Attivato.
--Guida

-?
Consente di visualizzare la sintassi della riga di comando e una breve descrizione di ogni opzione.
--lib:<folder-list>

-I:<folder-list>
Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--load:<filename> Compila il codice sorgente specificato all'avvio e carica i costrutti F# compilati nella sessione.
--mlcompatibility Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--noframework Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore
--nologo Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--nowarn:<warning-list> Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--optimize[+|-] Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--preferreduilang:<lang> Specifica il nome delle impostazioni cultura della lingua di output preferito, ad esempio es-ES, ja-JP.
--Tranquilla Eliminare l'output di F# Interactive nel flusso stdout .
--quotations-debug Specifica che devono essere generate informazioni di debug aggiuntive per le espressioni derivate dai valori letterali delle virgolette F# e dalle definizioni riflesse. Le informazioni di debug verranno aggiunte agli attributi personalizzati di un nodo dell'albero delle espressioni F#. Vedere Virgolette di codice ed Expr.CustomAttributes.
--readline[+|-] Abilitare o disabilitare il completamento tramite tabulazione in modalità interattiva.
--reference:<filename>

-r:<filename>
Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--tailcalls[+|-] Abilitare o disabilitare l'uso dell'istruzione tail IL, che fa sì che lo stack frame venga riutilizzato per le funzioni ricorsive della coda. Per impostazione predefinita, questa opzione è attivata.
--targetprofile:<string> Specifica il profilo del framework di destinazione di questo assembly. I valori validi sono mscorlib, netcore o netstandard. Il valore predefinito è mscorlib.
--use:<filename> Indica all'interprete di usare il file specificato all'avvio come input iniziale.
--utf8output Uguale all'opzione del compilatore fsc.exe. Per altre informazioni, vedere Opzioni del compilatore.
--warn:<warning-level> Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--warnaserror[+|-] Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.
--warnaserror[+|-]:<int-list> Uguale all'opzione del compilatore fsc.exe . Per altre informazioni, vedere Opzioni del compilatore.

Stampa strutturata interattiva F#

F# Interactive (dotnet fsi) usa una versione estesa della formattazione testo normale strutturato per segnalare i valori.

  1. Tutte le funzionalità della %A formattazione di testo normale sono supportate e alcune sono anche personalizzabili.

  2. La stampa viene colorata se i colori sono supportati dalla console di output.

  3. Viene impostato un limite sulla lunghezza delle stringhe visualizzate, a meno che non si valuti in modo esplicito tale stringa.

  4. Un set di impostazioni definibili dall'utente è disponibile tramite l'oggetto fsi .

Le impostazioni disponibili per personalizzare la stampa di testo normale per i valori segnalati sono:

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

Personalizzare con AddPrinter e AddPrintTransformer

La stampa in output interattivi F# può essere personalizzata usando fsi.AddPrinter e fsi.AddPrintTransformer. La prima funzione fornisce testo per sostituire la stampa di un oggetto . La seconda funzione restituisce invece un oggetto surrogato da visualizzare. Si consideri ad esempio il codice F# seguente:

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" }

Se si esegue l'esempio in F# Interactive, viene restituito in base al set di opzioni di formattazione. In questo caso, influisce sulla formattazione della data e dell'ora:

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

fsi.AddPrintTransformer può essere utilizzato per assegnare un oggetto surrogato per la stampa:

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

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

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

Verrà restituito questo output:

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

Se la funzione trasformatore passata a fsi.AddPrintTransformer restituisce null, il trasformatore di stampa viene ignorato. Può essere usato per filtrare qualsiasi valore di input a partire dal tipo obj. Ad esempio:

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

let y = "beep"

Verrà restituito questo output:

val y : string = ["quack"; "quack"; "quack"]
Posizione Descrizione
Opzioni del compilatore Vengono descritte le opzioni della riga di comando disponibili per il compilatore F# fsc.exe.