使我的函数返回错误消息

时间:2018-10-10 08:21:52

标签: list if-statement f#

我试图让我的函数在找到空子列表时返回“无效输入”。

let func (lst: 'a list list) =
    if List.contains [] lst then
        printfn "%s" "Invalid Input"
    else
        List.map List.head lst

这是我尝试过的方法,但这当然不起作用,因为我的if / else返回两种不同的类型。

2 个答案:

答案 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 profitmsdn

然后,您可以捕获异常以检索异常。