使用以下函数:
let Calc =
// do something
if something
(false, 0)
else
(true, some value)
如何定义并命名输出字段?
在C#中,我可以这样做:
(bool Success, int Value) Calc()....
那么当我获得结果后,我可以通过名称访问成功和值字段。在F#中,我该如何做到这一点?
使用以下函数:
let Calc =
// do something
if something
(false, 0)
else
(true, some value)
如何定义并命名输出字段?
在C#中,我可以这样做:
(bool Success, int Value) Calc()....
那么当我获得结果后,我可以通过名称访问成功和值字段。在F#中,我该如何做到这一点?
你可以通过绑定字段来为元组中的字段命名,如下所示:
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 ...