Opções interativas do F#
Este artigo descreve as opções de linha de comando compatíveis com F# Interactive, fsi.exe
. O F# Interactive aceita muitas das mesmas opções de linha de comando que o compilador F#, mas também aceita algumas opções adicionais.
Usar o F# Interativo para scripts
F# Interativo, dotnet fsi
, pode ser iniciado interativamente ou pode ser iniciado na linha de comando para executar um script. A sintaxe da linha de comando é
dotnet fsi [options] [ script-file [arguments] ]
A extensão de arquivo para arquivos de script F# é .fsx
.
Tabela de opções interativas do F#
A tabela a seguir resume as opções compatíveis com o F# Interativo. Você pode definir essas opções na linha de comando ou por meio do IDE do Visual Studio. Para definir essas opções no IDE do Visual Studio, abra o menu Ferramentas, selecione Opções, expanda o nó Ferramentas de F# e selecione F# Interativo.
Onde as listas aparecem em argumentos de opção interativa F#, os elementos de lista são separados por ponto-e-vírgula (;
).
Opção | Descrição |
---|---|
-- | Usado para instruir o F# Interativo a tratar os argumentos restantes como argumentos de linha de comando para o programa ou script em F#, que pode ser acessado no código usando a lista fsi.CommandLineArgs. |
--checked[+|-] | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--checknulls[+|-] | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--codepage:<int> | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--consolecolors[+|-] | Gera mensagens de aviso e erro em cores. |
**--compilertool:<extensionsfolder> | Referenciar um assembly ou um diretório contendo uma ferramenta de tempo de design (forma abreviada: -t). |
--crossoptimize[+|-] | Habilitar ou desabilitar otimizações entre módulos. |
--debug[+|-] --debug:[full|pdbonly|portable|embedded] -g[+|-] -g:[full|pdbonly|portable|embedded] |
O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--define:<string> | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--deterministic[+|-] | Produz um assembly determinístico (incluindo GUID de versão do módulo e carimbo de data/hora). |
--exec | Instrui o F# Interactive para encerrar após carregar os arquivos ou executar o arquivo de script especificado na linha de comando. |
--fullpaths | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--gui[+|-] | Habilita ou desabilita o loop de eventos do Windows Forms. O padrão é habilitado. |
--help -? |
Usado para exibir a sintaxe de linha de comando e uma breve descrição de cada opção. |
--lib:<folder-list> -I:<folder-list> |
O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--load:<filename> | Compila o código-fonte especificado na inicialização e carrega os constructos F# compilados na sessão. |
--mlcompatibility | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--noframework | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte as opções do compilador |
--nologo | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--nowarn:<warning-list> | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--optimize[+|-] | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--preferreduilang:<lang> | Especifica o nome preferencial da cultura da linguagem de saída (por exemplo, es-ES, ja-JP). |
--quiet | Suprimir a saída do F# Interativo para o fluxo stdout. |
--quotations-debug | Especifica que informações extras de depuração devem ser emitidas para expressões derivadas de literais de citações F# e definições refletidas. As informações de depuração são adicionadas aos atributos personalizados de um nó de árvore de expressão de F#. Confira Citações de Código e Expr.CustomAttributes. |
--readline[+|-] | Habilitar ou desabilitar a conclusão de tabulação no modo interativo. |
--reference:<filename> -r:<nome de arquivo> |
O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--tailcalls[+|-] | Habilitar ou desabilitar o uso da instrução IL de cauda, que faz com que o registro de ativação seja reutilizado para funções recursivas de cauda. Essa opção está habilitada por padrão. |
--targetprofile:<string> | Especifica o perfil da estrutura de destino do assembly. Os valores válidos são mscorlib , netcore ou netstandard . O padrão é mscorlib . |
--use:<filename> | Informa ao interpretador para usar o arquivo especificado na inicialização como entrada inicial. |
--utf8output | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--warn:<warning-level> | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--warnaserror[+|-] | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
--warnaserror[+|-]:<int-list> | O mesmo que a opção do compilador fsc.exe. Para obter mais informações, consulte Opções do Compilador. |
Impressão estruturada interativa F#
O F# Interativo (dotnet fsi
) usa uma versão estendida da formatação de texto sem formatação estruturado para relatar valores.
Todos os recursos de formatação de texto simples
%A
têm suporte e alguns também são personalizáveis.A impressão será colorida se houver suporte para cores pelo console de saída.
Um limite é colocado no comprimento das cadeias de caracteres mostradas, a menos que você avalie explicitamente essa cadeia de caracteres.
Um conjunto de configurações definíveis pelo usuário está disponível por meio do objeto
fsi
.
As configurações disponíveis para personalizar a impressão de texto sem formatação para valores relatados são:
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
Personalizar com AddPrinter
e AddPrintTransformer
A impressão nas saídas do F# Interactive pode ser personalizada usando fsi.AddPrinter
e fsi.AddPrintTransformer
.
A primeira função fornece texto para substituir a impressão de um objeto. Em vez disso, a segunda função retorna um objeto alternativo a ser exibido. Por exemplo, considere o seguinte código 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" }
Se você executar o exemplo no F# Interativo, ele exibirá o resultado com base no conjunto de opção de formatação estabelecido. Nesse caso, isso afeta a formatação de data e hora:
type DateAndLabel =
{ Date: DateTime
Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
Label = "New Year" }
fsi.AddPrintTransformer
pode ser usado para dar um objeto alternativo para impressão:
type MyList(values: int list) =
member _.Values = values
fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)
let x = MyList([1..10])
Isso gera:
val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
Se a função de transformador passada para fsi.AddPrintTransformer
retornar null
, o transformador de impressão será ignorado.
Isso pode ser usado para filtrar qualquer valor de entrada começando com o tipo obj
. Por exemplo:
fsi.AddPrintTransformer(fun (x:obj) ->
match x with
| :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
| _ -> null)
let y = "beep"
Isso gera:
val y : string = ["quack"; "quack"; "quack"]
Tópicos relacionados
Título | Descrição |
---|---|
Opções do compilador | Descreve as opções de linha de comando disponíveis para o compilador F#, fsc.exe. |