为什么我不能匹配字符串或字符串列表类型

时间:2017-11-28 11:37:34

标签: f# discriminated-union

我是F#的新手并尝试使用stringstring list的联合类型,然后在函数内匹配它。

我在第二个案例This expression was expected to have type 'stringOrList' but here has type ''a list'上收到错误。

我无法理解为什么。第一种情况不匹配字符串大小写,因此第二种情况与字符串列表大小写匹配吗?

type stringOrList = S of string | L of string list

let mockFetcher (fileOrFiles : stringOrList) url =
    match fileOrFiles with
        | S file ->
            file
        | L firstFile :: rest ->
            firstFile

1 个答案:

答案 0 :(得分:4)

如上所述,由于优先规则,您的案例如下:(L firstFile) :: rest

应为L (firstFile :: rest)

......不要忘记遗失的案件L []