我试图让我的函数在找到空子列表时返回“无效输入”。
let func (lst: 'a list list) =
if List.contains [] lst then
printfn "%s" "Invalid Input"
else
List.map List.head lst
这是我尝试过的方法,但这当然不起作用,因为我的if / else返回两种不同的类型。
答案 0 :(得分:2)
您可以使用Result
类型:
let func lst =
if List.contains [] lst
then Error "Invalid input"
else Ok (List.map List.head lst)
答案 1 :(得分:1)
我认为您应该提出一个例外。顺便说一句,您可能要使用List.isEmpty
:
let func (lst: 'a list list) =
if List.contains [] lst then
raise (System.ArgumentException("Invalid Input"))
else
List.map List.head lst
您也可以将raise
替换为invalidArg "lst"
let func (lst: 'a list list) =
if List.isEmpty lst then invalidArg "lst" "Input is empty"
else List.map List.head lst
了解更多信息:Exceptions | F# for fun and profit或msdn。
然后,您可以捕获异常以检索异常。