Opciones interactivas de F#
En este artículo se describen las opciones de línea de comandos compatibles con F# Interactive, fsi.exe
. F# Interactive acepta muchas de las mismas opciones de línea de comandos que el compilador de F#, pero también acepta algunas opciones adicionales.
Usando F# Interactivo para la creación de scripts
F# Interactive, dotnet fsi
, se puede iniciar de forma interactiva o se puede iniciar desde la línea de comandos para ejecutar un script. La sintaxis de la línea de comandos es
dotnet fsi [options] [ script-file [arguments] ]
La extensión de archivo para los archivos de script de F# es .fsx
.
Tabla de opciones interactivas de F#
En la tabla siguiente se resumen las opciones admitidas por F# Interactive. Puede establecer estas opciones en la línea de comandos o a través del IDE de Visual Studio. Para establecer estas opciones en el IDE de Visual Studio, abra el menú Herramientas , seleccione Opciones, expanda el nodo Herramientas de F# y, a continuación, seleccione F# Interactive.
Donde aparecen listas en argumentos de opción interactivo de F#, los elementos de lista se separan por punto y coma (;
).
Opción | Descripción |
---|---|
-- | Se usa para indicar a F# Interactive que trate los argumentos restantes como argumentos de línea de comandos al programa o script de F#, al que puede acceder en el código mediante la lista fsi. CommandLineArgs. |
--checked[+|-] | Igual que la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--checknulls[+|-] | Igual que la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--codepage:<int> | Es igual que la opción del compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--consolecolors[+|-] | Genera mensajes de error y advertencia en color. |
**--compilertool:<extensionsfolder> | Referencia a un ensamblado o directorio que contiene una herramienta de tiempo de diseño (forma corta: -t). |
--crossoptimize[+|-] | Habilite o deshabilite las optimizaciones entre módulos. |
--debug[+|-] --debug:[full|pdbonly|portable|embedded] -g[+|-] -g:[full|pdbonly|portable|embedded] |
Igual que la opción del compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--define:<string> | Igual que la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--deterministic[+|-] | Genera un ensamblado determinista (incluido el GUID de la versión del módulo y la marca de tiempo). |
--exec | Indica a F# interactivo que salga después de cargar los archivos o ejecutar el archivo de script proporcionado en la línea de comandos. |
--fullpaths | Equivalente a la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--gui[+|-] | Habilita o deshabilita el bucle de eventos de Windows Forms. El valor predeterminado está habilitado. |
--help -? |
Se usa para mostrar la sintaxis de la línea de comandos y una breve descripción de cada opción. |
--lib:<lista de carpetas> -I:<folder-list> |
Igual que la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--load:<filename> | Compila el código fuente especificado en el inicio y carga las construcciones de F# compiladas en la sesión. |
--mlcompatibility | Igual que la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--noframework | Lo mismo que la opción del compilador de fsc.exe. Para obtener más información, consulte Opciones del compilador |
--nologo | Igual que la opción del compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--nowarn:<warning-list> | Igual a la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--optimize[+|-] | Equivale a la opción fsc.exe del compilador. Para obtener más información, vea Opciones del compilador. |
--preferreduilang:<lang> | Especifica el nombre de referencia cultural de idioma de salida preferido (por ejemplo, es-ES, ja-JP). |
--quiet | Suprima la salida de F# Interactive en el flujo stdout. |
--quotations-debug | Especifica que se debe emitir información adicional de depuración para expresiones derivadas de literales de expresiones delimitadas de F# y definiciones reflejadas. La información de depuración se agrega a los atributos personalizados de un nodo de árbol de expresión de F#. Vea Expresiones de código delimitadas y Expr.CustomAttributes. |
--readline[+|-] | Habilite o deshabilite la finalización de tabulación en modo interactivo. |
--reference:<filename> -r:<nombre de archivo> |
Igual que la opción fsc.exe del compilador. Para obtener más información, vea Opciones del compilador. |
--tailcalls[+|-] | Habilita o deshabilita el uso de la instrucción IL de cola, lo que hace que el marco de pila se reutilice en las funciones recursivas de cola. Esta opción está habilitada de forma predeterminada. |
--targetprofile:<string> | Especifica el perfil de marco de destino de este ensamblado. Los valores válidos son mscorlib , netcore o netstandard . El valor predeterminado es mscorlib . |
--use:<filename> | Indica al intérprete que use el archivo especificado al iniciarse como entrada inicial. |
--utf8output | Igual que la opción del compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--warn:<warning-level> | Igual que la opción del compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--warnaserror[+|-] | Igual que la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
--warnaserror[+|-]:<int-list> | Igual que la opción de compilador fsc.exe. Para obtener más información, vea Opciones del compilador. |
Impresión estructurada de F# interactivo
F# Interactive (dotnet fsi
) usa una versión extendida de formato de texto sin formato estructurado para informar de los valores.
Se admiten todas las características del formato de texto sin formato
%A
y algunas también se pueden personalizar.La impresión se colorea si la consola de salida admite colores.
Se coloca un límite en la longitud de las cadenas que se muestran, a menos que se evalúe explícitamente esa cadena.
Hay disponible un conjunto de opciones definidas por el usuario a través del objeto
fsi
.
Los valores disponibles para personalizar la impresión de texto sin formato para los valores notificados son:
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
Personalización con AddPrinter
y AddPrintTransformer
La impresión en salidas interactivas de F# se puede personalizar mediante fsi.AddPrinter
y fsi.AddPrintTransformer
.
La primera función proporciona texto para reemplazar la impresión de un objeto. La segunda función devuelve un objeto suplente que se va a mostrar en su lugar. Por ejemplo, considere el siguiente código de 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" }
Si ejecuta el ejemplo en F# Interactive, se genera en función del conjunto de opciones de formato. En este caso, afecta al formato de fecha y hora:
type DateAndLabel =
{ Date: DateTime
Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
Label = "New Year" }
fsi.AddPrintTransformer
se puede usar para proporcionar un objeto suplente para imprimir:
type MyList(values: int list) =
member _.Values = values
fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)
let x = MyList([1..10])
Esto genera:
val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
Si la función de transformador pasada a fsi.AddPrintTransformer
devuelve null
, se omite el transformador de impresión.
Esto se puede usar para filtrar cualquier valor de entrada empezando por el tipo obj
. Por ejemplo:
fsi.AddPrintTransformer(fun (x:obj) ->
match x with
| :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
| _ -> null)
let y = "beep"
Esto genera:
val y : string = ["quack"; "quack"; "quack"]
Temas relacionados
Título | Descripción |
---|---|
opciones del compilador | Describe las opciones de línea de comandos disponibles para el compilador de F#, fsc.exe. |