具有以下功能:
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#中执行相同的操作?
您可以像这样绑定到元组的字段来命名它们
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)