List 使我的函数返回错误消息
我试图让我的函数在发现一个空的子列表时返回“invalid Input”List 使我的函数返回错误消息,list,if-statement,f#,List,If Statement,F#,我试图让我的函数在发现一个空的子列表时返回“invalid Input” let func (lst: 'a list list) = if List.contains [] lst then printfn "%s" "Invalid Input" else List.map List.head lst 这是我尝试过的,但这当然不起作用,因为我的if/else返回两种不同的类型 我认为你应该提出一个例外。顺便说一下,您可能需要使用: 您还可以将
let func (lst: 'a list list) =
if List.contains [] lst then
printfn "%s" "Invalid Input"
else
List.map List.head lst
这是我尝试过的,但这当然不起作用,因为我的if/else返回两种不同的类型 我认为你应该提出一个例外。顺便说一下,您可能需要使用: 您还可以将
raise
替换为invalidArg“lst”
了解更多:或
然后您可以捕获异常以检索异常。您可以使用
结果
类型:
let func lst =
if List.contains [] lst
then Error "Invalid input"
else Ok (List.map List.head lst)
回答得好!(有一些关于面向铁路的编程的信息)我能设法避免包含所有错误消息,而只包含“无效输入”或“输入为空”吗?@wardz也许dumetrulo的答案更适合你的情况。如果需要异常消息,请使用
消息
属性。
let func (lst: 'a list list) =
if List.isEmpty lst then invalidArg "lst" "Input is empty"
else List.map List.head lst
let func lst =
if List.contains [] lst
then Error "Invalid input"
else Ok (List.map List.head lst)