2010-09-18 125 views
5

编译F#时,有时会出现烦人的模式匹配和缩进警告。有没有办法禁用警告?我非常强调警告。F#抑制警告

+0

也许解决的警告? :) – ChaosPandion 2010-09-18 18:26:00

+1

我会非常小心关闭模式匹配警告。考虑到F#语法可以使用缩进来确定范围,我不会忽略这些警告 - 我试图理解它们。 – 2010-09-19 16:06:12

+2

有没有办法在每个实例的基础上做到这一点?有几次我知道编译器不知道的事情,例如,正则表达式匹配会产生的组数。 – gatoatigrado 2010-10-10 01:26:50

回答

7

如果你忘了,你可以键入

let rec x = lazy(x.Value) 

,并得到警告

这和其他递归引用 对象(S)被定义为 在运行时通过使用 延迟引用检查初始化 - 健全性 。这是因为你的 定义了一个或多个递归的 对象,而不是递归的 函数。此警告可能是 通过使用'#nowarn'40''或 ' - 现在:40'被抑制。

这表明您可以使用该编译器标志--nowarn在命令行,或在代码中使用哈希指令#nowarn。每个警告的警告编号将成为构建输出的一部分(Visual Studio错误列表不显示数字,因此如果在VS中,则编译并检查构建输出)。此外,如果在VS中,可以进入项目属性页面的“Build”选项卡,并使用“warning level”选择器和“suppress warnings”字段(以分号分隔的数字列表)来控制哪些警告是通过diplayed VS UI。

(顺便说一句,我相信#nowarn只关闭当前文件中警告,而--nowarn关闭它为整个项目被编译。)

+0

好答案Brian – 2014-11-21 22:05:27