Active Patterns的联合案例是否总是需要通配符?
警告:
此表达式上的不完整模式匹配。
let (|Positive|Neutral|Negative|) = function
| x when x > 0 -> Positive
| x when x = 0 -> Neutral
| x when x < 0 -> Negative
当我将外卡作为联合案例插入时,警告已解决:
let (|Positive|Neutral|Negative|) = function
| x when x > 0 -> Positive
| x when x = 0 -> Neutral
| x when x < 0 -> Negative
| _ -> failwith "unknown"
我遗失了哪些其他案例?
答案 0 :(得分:4)
when
防护。在这种特殊情况下,只要省略最后一个警卫,因为你没有错过一个案例:
let (|Positive|Neutral|Negative|) = function
| x when x > 0 -> Positive
| x when x < 0 -> Negative
| _ -> Neutral
注意:对于int
,这没关系,float
需要更多案例(NaN
和无穷大),编译器将无法帮助您(正如您刚刚发现的那样) )。