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

Tho*_*mas 3 f#

具有以下功能:

let Calc =
    // do something
    if something
        (false, 0)
    else
        (true, some value)
Run Code Online (Sandbox Code Playgroud)

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

在C#中,我可以这样做:

(bool Success, int Value) Calc()....
Run Code Online (Sandbox Code Playgroud)

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

Che*_*usk 8

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

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

let (success, value) = Calc ()
Run Code Online (Sandbox Code Playgroud)

您无需在Calc自身的定义中为元组字段命名,您可以在use位置进行命名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 ()
Run Code Online (Sandbox Code Playgroud)

但看起来您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 ...
Run Code Online (Sandbox Code Playgroud)