Заставить мою функцию возвращать сообщение об ошибке - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь заставить мою функцию возвращать «неверный ввод», когда находит пустой подсписок.

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 голосов
/ 10 октября 2018

Вы можете использовать Result тип:

let func lst =
    if List.contains [] lst
    then Error "Invalid input"
    else Ok (List.map List.head lst)
0 голосов
/ 10 октября 2018

Я думаю, вы должны поднять исключение.Кстати, вы можете использовать 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 

Узнать больше: Исключения |F # для развлечения и прибыли или msdn .

Тогда вы можете поймать исключение, чтобы получить исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...