Partilhar via


Opções interativas do F#

Este artigo descreve as opções de linha de comando suportadas pelo 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 F# interativo para scripts

F# interativo, dotnet fsi, pode ser iniciado interativamente, ou pode ser iniciado a partir da linha de comando para executar um script. A sintaxe da linha de comando é

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

A extensão do arquivo para arquivos de script F# é .fsx.

Tabela de opções interativas do F#

A tabela a seguir resume as opções suportadas pelo F# Interactive. 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 F# e selecione F# Interativo.

Onde as listas aparecem nos argumentos de opção interativo do F#, os elementos da lista são separados por ponto-e-vírgula (;).

Opção Descrição
-- Usado para instruir o F# Interactive a tratar os argumentos restantes como argumentos de linha de comando para o programa ou script F#, que você pode acessar em código usando a lista fsi. CommandLineArgs.
--verificado[+|-] O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--checknulls[+|-] O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--codepage:<int> O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--consolecolors[+|-] Emite mensagens de aviso e erro em cores.
**--compiladorferramenta:<pastaextensões> Faça referência a um assembly ou diretório que contenha uma ferramenta de tempo de desenvolvimento (Abreviação: -t).
--crossoptimize[+|-] Habilite ou desabilite otimizações entre módulos.
--debug[+|-]

--debug:[completo|pdbonly|portátil|incorporado]

-g[+|-]

-g:[completo|pdbonly|portátil|incorporado]
O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--define:<string> O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--determinística [+|-] Produz uma assemblagem determinada (incluindo GUID da versão do módulo e carimbo de data/hora).
--exec Instrui o F# interativo a sair depois de carregar os arquivos ou executar o arquivo de script fornecido na linha de comando.
--fullpaths O mesmo que a opção de 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 está ativado.
--ajuda

-?
Usado para exibir a sintaxe da linha de comando e uma breve descrição de cada opção.
--lib:<lista de pastas>

-I:<lista de pastas>
O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--load:<nome do arquivo> Compila o código-fonte fornecido na inicialização e carrega as construções F# compiladas na sessão.
--ml-compatibilidade O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--noframework O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador
--nologo O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--nowarn:<lista de avisos> O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--otimizar[+|-] O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--preferreduilang:<lang> Especifica o nome da cultura do idioma de saída preferido (por exemplo, es-ES, ja-JP).
-- #silencioso Suprima a saída do F# Interactive para o fluxo de stdout.
--quotations-debug Especifica que informações de depuração adicionais devem ser emitidas para expressões que são derivadas de literais de citação F# e definições refletidas. As informações de depuração são adicionadas aos atributos personalizados de um nó da árvore de expressão F#. Consulte Cotações de código e Expr.CustomAttributes.
--readline[+|-] Habilite ou desabilite o preenchimento de guias no modo interativo.
--reference:<nome do arquivo>

-r:<nome do arquivo>
O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--tailcalls[+|-] Habilite ou desative o uso da instrução tail IL, que faz com que a estrutura de pilha seja reutilizada para funções de recursão final. Esta opção está ativada por predefinição.
--targetprofile:<string> Especifica o perfil da estrutura alvo deste conjunto. Os valores válidos são mscorlib, netcoreou netstandard. O padrão é mscorlib.
--use:<nome do arquivo> Diz ao intérprete para usar o arquivo fornecido na inicialização como entrada inicial.
--utf8output O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--aviso:<nível de alerta> O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--warnaserror[+|-] O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.
--warnaserror[+|-]:<int-list> O mesmo que a opção de compilador fsc.exe. Para obter mais informações, consulte Opções do compilador.

F# Impressão estruturada interativa

O F# Interactive (dotnet fsi) usa uma versão estendida de formatação de texto sem formatação estruturada para relatar valores.

  1. As funcionalidades de formatação de texto simples do %A são suportadas, e algumas são ainda personalizáveis.

  2. A impressão é colorida se as cores forem suportadas pelo console de saída.

  3. Um limite é colocado no comprimento das cadeias de caracteres mostradas, a menos que você avalie explicitamente essa cadeia de caracteres.

  4. Um conjunto de configurações definidas 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

Personalize com AddPrinter e AddPrintTransformer

Impressão em F# As saídas interativas podem ser personalizadas usando fsi.AddPrinter e fsi.AddPrintTransformer. A primeira função fornece texto para substituir a impressão de um objeto. A segunda função retorna um objeto substituto para exibir em vez disso. 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 executar o exemplo no F# Interactive, ele será exibido com base nas opções de formatação definidas. Neste caso, 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 substituto para impressão:

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

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

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

Isto resulta:

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

Se a função do transformador passada para fsi.AddPrintTransformer retornar null, então o transformador de impressão é 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"

Isto resulta:

val y : string = ["quack"; "quack"; "quack"]
Título Descrição
Opções do compilador Descreve as opções de linha de comando disponíveis para o compilador F#, fsc.exe.