我是F#的新手并尝试使用string
或string 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
答案 0 :(得分:4)
如上所述,由于优先规则,您的案例如下:(L firstFile) :: rest
。
应为L (firstFile :: rest)
......不要忘记遗失的案件L []
。