我需要编写一个函数来返回F#中的Task。
我最接近的是:
let Test : Async<bool> =
async {
printfn "3"
true
}
但是..不起作用;编译器说我是给Async而不是Async。
我正确理解没有Task对象并且返回类型应定义为Async吗?
正确的语法是什么?
答案 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