返回名称为F#的元组

Tho*_*mas 3 c# f#

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

public (bool result, string message) Hello()
{
    ...
    return (true, "ok")
}
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何在F#中做到这一点。

我可以:

let Hello () =
    (true, "ok")
Run Code Online (Sandbox Code Playgroud)

但是,当我从C#调用Hello时,必须将元素获取为“ Item1”和“ Item2”。

有没有办法在返回的元组中命名字段?

我试过了:

let hello () : (result, message ): bool * string =
Run Code Online (Sandbox Code Playgroud)

以及其他一些变体,但我无法做到这一点。

在C#中,返回的类型被视为元组对象,而上面显示的纯C#示例似乎并未使用元组类型。

我猜你不能在元组对象中命名项目,但是有没有办法像C#中那样返回参数?

Tea*_*Dev 6

标准F#元组System.Tuple位于幕后(将用Tuple<bool, string>C#编写),而C#代码返回的元组是较新的System.ValueTuple。要从F#中创建元组,您需要在struct关键字创建元组之前添加前缀。但是,这仍然不能让您在F#中命名元组元素。这只是C#编译器功能,不支持基础BCL类型。

F#中具有以类似方式使用各个返回值的选项是