F# 交互窗口选项
本文介绍 F# 交互窗口 fsi.exe
支持的命令行选项。 F# 交互窗口接受许多与 F# 编译器相同的命令行选项,但也接受一些其他选项。
使用 F# 交互窗口编写脚本
F# 交互窗口 dotnet fsi
可通过交互方式启动,也可以从命令行启动,以运行脚本。 命令行语法是
dotnet fsi [options] [ script-file [arguments] ]
F# 脚本文件的文件扩展名为 .fsx
。
F# 交互窗口选项表
下表总结了 F# 交互窗口支持的选项。 你可以在命令行上或通过 Visual Studio IDE 来设置这些选项。 若要在 Visual Studio IDE 中设置这些选项,请打开“工具”菜单,选择“选项”,展开“F# 工具”节点,然后选择“F# 交互窗口”。
在 F# 交互窗口选项参数中显示了列表的位置,列出由分号 (;
) 分隔的元素。
选项 | 说明 |
---|---|
-- | 用于指示 F# 交互窗口将剩余的参数当作 F# 程序或脚本的命令行参数,你可以使用列表 fsi.CommandLineArgs 在代码中访问这些参数。 |
--checked[+|-] | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--codepage:<int> | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--consolecolors[+|-] | 以彩色输出警告和错误消息。 |
**--compilertool:<extensionsfolder> | 引用包含设计时工具的程序集或目录(短格式: -t)。 |
--crossoptimize[+|-] | 启用或禁用跨模块优化。 |
--debug[+|-] --debug:[full|pdbonly|portable|embedded] -g[+|-] -g:[full|pdbonly|portable|embedded] |
与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--define:<string> | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--deterministic[+|-] | 产生确定性的程序集(包括模块版本 GUID 和时间戳)。 |
--exec | 指示 F# 交互窗口在加载文件或运行命令行上给定的脚本文件后退出。 |
--fullpaths | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--gui[+|-] | 启用或禁用 Windows 窗体事件循环。 默认是启用的。 |
--help -? |
用于显示命令行语法和每个选项的简短说明。 |
--lib:<folder-list> -I:<folder-list> |
与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--load:<filename> | 在启动时编译给定的源代码,并将已编译的 F# 构造加载到会话中。 |
--mlcompatibility | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--noframework | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项 |
--nologo | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--nowarn:<warning-list> | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--optimize[+|-] | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--preferreduilang:<lang> | 指定首选的输出语言区域性名称(例如 es-ES 和 ja-JP)。 |
--quiet | 抑制 F# 交互窗口向 stdout 流的输出。 |
--quotations-debug | 指定应为派生自 F# 引用文本和反射定义的表达式发出的额外调试信息。 调试信息将添加到 F# 表达式树节点的自定义属性中。 请参阅代码引用和 Expr.CustomAttributes。 |
--readline[+|-] | 启用或禁用交互模式下的选项卡补全。 |
--reference:<filename> -r:<filename> |
与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--tailcalls[+|-] | 启用或禁用尾 IL 指令,这将导致对尾递归函数重复使用堆栈帧。 默认情况下该选项处于启用状态。 |
--targetprofile:<string> | 指定此程序集的目标框架配置文件。 有效值为 mscorlib 、netcore 或 netstandard 。 默认为 mscorlib 。 |
--use:<filename> | 通知解释器在启动时使用给定文件作为初始输入。 |
--utf8output | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--warn:<warning-level> | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--warnaserror[+|-] | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
--warnaserror[+|-]:<int-list> | 与 fsc.exe 编译器选项相同。 有关详细信息,请参阅编译器选项。 |
F# 交互窗口结构化打印
F# 交互窗口 (dotnet fsi
) 使用结构化纯文本格式的扩展版本来报告值。
支持
%A
纯文本格式设置的所有功能,可对其中一些功能进行额外的自定义。如果输出控制台支持颜色,将给打印着色。
对显示的字符串的长度设定限制,除非你显式地计算该字符串。
可通过
fsi
对象提供一组用户可定义的设置。
用于为报告值自定义纯文本打印的可用设置是:
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
使用 AddPrinter
和 AddPrintTransformer
进行自定义
可使用 fsi.AddPrinter
和 fsi.AddPrintTransformer
对在 F# 交互窗口输出中打印进行自定义。
第一个函数提供文本来替换对象的打印。 第二个函数则返回要显示的代理对象。 例如,请考虑下面的 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" }
如果你在 F# 交互窗口中执行示例,它基于格式设置选项集进行输出。 在这种情况下,它会影响日期和时间的格式设置:
type DateAndLabel =
{ Date: DateTime
Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
Label = "New Year" }
fsi.AddPrintTransformer
可用于为打印提供代理对象:
type MyList(values: int list) =
member _.Values = values
fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)
let x = MyList([1..10])
输出:
val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
如果传递给 fsi.AddPrintTransformer
的转换器函数返回 null
,则忽略打印转换器。
这可用于从 obj
类型开始来筛选任何输入值。 例如:
fsi.AddPrintTransformer(fun (x:obj) ->
match x with
| :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
| _ -> null)
let y = "beep"
输出:
val y : string = ["quack"; "quack"; "quack"]
相关主题
Title | 描述 |
---|---|
编译器选项 | 介绍 F# 编译器 fsc.exe 提供的命令行选项。 |