Как назвать возвращаемые типы в F #? - PullRequest
3 голосов
/ 16 мая 2019

С помощью следующей функции:

let Calc =
    // do something
    if something
        (false, 0)
    else
        (true, some value)

как мне определить имя выходных полей?

в C # я мог бы сделать:

(bool Success, int Value) Calc()....

так что тогда, когдаЯ получил свой результат, я могу получить доступ к полям Success и Value по имени;как я могу сделать то же самое в F #?

1 Ответ

8 голосов
/ 16 мая 2019

Вы можете назвать поля своего кортежа, связавшись с ними, например:

let Calc () =
    // do something
    if something
        (false, 0)
    else
        (true, some value)

let (success, value) = Calc ()

вам не нужно давать имена полям кортежа в определении самого Calc, вы можете сделать это в местах, где используется Calc. Если вы предпочитаете давать имена результатов, рассмотрите возможность создания типа записи, который будет содержать:


type CalcData = { success: bool; value: int }

let Calc () = 
  if something then { success = false; value = 0 }
  else { success = true, value = 123 }

let {success = success; value = value} = Calc ()

но похоже, что ваш Calc может либо ничего не вернуть, либо получить какой-то результат, для которого был создан тип Option:


let calc () = if something then None else Some 123

match calc () with
| None -> // if calc returned no value then do ....
| Some value -> // if calc returned a value then do ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...