我想知道F#中是否存在代码功能(不是编译器功能),因为不完整的模式匹配会出现错误,而不是警告。
我需要这个能够根据具体情况而定。即,在代码中的某些地方,我希望不完整的模式匹配是一个警告,而在同一个程序集中的其他地方,我希望它是一个错误。因此,设置编译器标志以将 all 不完整模式匹配警告视为错误是不够的,如Compile-time constraint for complete pattern match所示。
这看起来可能像
type MyUnion = First | Second
let foo x =
match x with
| First -> "hello"
// raises a compile-time warning
let bar x =
[<AssertCompleteMatch>]
match x with
| First -> "hello"
// raises a compile-time error
或者该属性可能会应用于该类型,以确保所有与该特定类型匹配的模式都已完成。
答案 0 :(得分:4)
您可以将警告25视为错误,然后使用
#nowarn "0025"
在要明确忽略它的文件中。但是禁用警告是文件范围,而不是匹配范围。我认为这是你能做的最好的事情。