如何将C#元组转换为F#元组?
具体来说,我有一个Result类型的C#实现:
public class Result<T,E>
{
public Result(T data) => Ok = (true,data);
public Result(E data) => Error = (true,data);
public (bool,T) Ok { get; }
public (bool,E) Error { get; }
}
Run Code Online (Sandbox Code Playgroud)
我想取一个Ok结果或Error结果的元组值,并在我的F#代码中使用它.
例:
let result = databaseService.getSomething(userIdValue) |> Async.AwaitTask |> Async.RunSynchronously
let isSuccessful,forms = result.Ok
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
错误FS0001一个元组类型是一个struct元组,另一个是参考元组
总之,我对如何将C#元组转换为F#元组感到困惑.我找到了这个链接.但我无法利用它来满足我的需求.
C#7.0元组语法生成的ValueTuple值与F#元组(旧的Tuple类)不同.Luckilly自F#4.1以来你可以使用
let struct (isSuccessful, forms) = result.Ok
Run Code Online (Sandbox Code Playgroud)
注意模式中的额外struct关键字.您可以使用相同的语法来创建新ValueTuple值,例如let tup = struct (true, 42)