Opciones de F# Interactive
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.
Uso de F# Interactive para scripting
F# interactivo, dotnet fsi
, se puede iniciar de forma interactiva o desde la línea de comandos para ejecutar un script. La sintaxis de 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 los argumentos de opción interactivos de F#, los elementos de lista están separados 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 del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--codepage:<int> | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--consolecolors[+|-] | Advertencias de salida y mensajes de error en color. |
**--compilertool:<extensionsfolder> | Referencia a un ensamblado o directorio que contiene una herramienta de tiempo de diseño (forma corta: -t). |
--crossoptimize[+|-] | Habilitar o deshabilitar 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, consulte Opciones del compilador. |
--define:<string> | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--deterministic[+|-] | Genera un ensamblado determinista (con el GUID y la marca de tiempo de la versión del módulo). |
--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 | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--gui[+|-] | Habilita o deshabilita el bucle de eventos Windows Forms. El valor predeterminado es habilitado. |
--help -? |
Se usa para mostrar la sintaxis de la línea de comandos y una breve descripción de cada opción. |
--lib:<folder-list> -I:<folder-list> |
Igual que la opción del compilador fsc.exe. Para obtener más información, consulte 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 del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--noframework | Igual que la opción del compilador fsc.exe. Para obtener más información, vea Opciones del compilador |
--nologo | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--nowarn:<warning-list> | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--optimize[+|-] | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--preferreduilang:<lang> | Especifica el nombre de la referencia cultural del 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 del á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:<filename> |
Igual que la opción del compilador fsc.exe. Para obtener más información, consulte 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, consulte Opciones del compilador. |
--warn:<warning-level> | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--warnaserror[+|-] | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte Opciones del compilador. |
--warnaserror[+|-]:<int-list> | Igual que la opción del compilador fsc.exe. Para obtener más información, consulte 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.
Un límite se coloca en la longitud de las cadenas que se muestran, a menos que evalúe explícitamente esa cadena.
Hay disponible un conjunto de configuraciones definibles por el usuario a través del objeto
fsi
.
La configuración disponible 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 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])
Esta es la salida:
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"
Esta es la salida:
val y : string = ["quack"; "quack"; "quack"]
Temas relacionados
Title | Descripción |
---|---|
Opciones del compilador | Describe las opciones de línea de comandos disponibles para el compilador de F#, fsc.exe. |