f# - 使用 FSharp 中的 Task.FromResult(0)

标签 f#

我正在将一些遗留的 C# 类重写为 F#。其中一个类使用 this.SendAsync(identityMessage) 的单一方法实现了 IIdentityMessageService

在 C# 代码中,我看到了这个

    if (transportWeb != null)
        return transportWeb.DeliverAsync(message);
    else
        return Task.FromResult(0);

我像这样在 F# 中尝试过
    if  transportWeb != null then
        transportWeb.DeliverAsync(message)
    else
        Task.FromResult(0)

我在最后一行出现错误
This expression was expected to have type
    Task    
but here has type
    Task<'a>    

我错过了什么?谢谢

最佳答案

它看起来像 DeliverAsync返回 Task ,所以你需要两个分支都返回一个 Task . Task.FromResult(0)返回 Task<int>所以你需要明确地将它上传到 Task :

else
    Task.FromResult(0) :> Task

关于f# - 使用 FSharp 中的 Task.FromResult(0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26960836/

相关文章:

f# - List.unfold/Array.unfold 导致内存爆裂

C# 或 F# 用于解析类似 Slim 的缩进敏感语言?

multithreading - F# 每秒生成一个新的异步请求

f# - 有没有更好的方法来计算 F# 中立方体的所有可能方向?

f# - 如何在 printfn/sprintf 中转义 %?

.net - [F#]; 【编译错误】;无法编译任何 F# 程序

collections - 该算法已经存在高阶函数了吗?

types - F#在模式匹配中返回不同的类型

f# - F# 类型提供程序与传统的 'type providers' 相比有什么优势?

.net - 当 F# 中的类型提供程序更改时会发生什么?