如何命名F#中的返回类型?

时间:2019-05-15 21:21:35

标签: f#

具有以下功能:

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

如何定义输出字段的名称?

在C#中我可以做到:

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

因此,当我得到结果时,可以按名称访问“成功”和“值”字段;我该如何在F#中执行相同的操作?

1 个答案:

答案 0 :(得分:8)

您可以像这样绑定到元组的字段来命名它们

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 ...