以F#返回Task <bool>的语法是什么?

时间:2019-10-30 01:49:53

标签: f#

我需要编写一个函数来返回F#中的Task。

我最接近的是:

        let Test : Async<bool> =
            async {
                printfn "3"
                true
            }

但是..不起作用;编译器说我是给Async而不是Async。

我正确理解没有Task对象并且返回类型应定义为Async吗?

正确的语法是什么?

1 个答案:

答案 0 :(得分:1)

F#默认没有内置的Task构造的计算表达式。

但是,如果要使用它,则可以(由于rspeele)。您必须将其添加为nuget包:https://github.com/rspeele/TaskBuilder.fs

然后您可以像这样使用它:

open FSharp.Control.Tasks.V2

let taskMethod : Task<bool> = 
    task {
        printfn "3"
        return true
    }

如果您想使用内置的Async方法,可以执行以下操作:

open System.Threading.Tasks

let asyncMethod : Async<bool> = 
    async {
        printfn "bob"
        return true
    }

let taskMethod : Task<bool> = 
    asyncMethod |> Async.StartAsTask