问题:
我在努力弄清楚如何返回一个异步结果类型的函数模型。
例:
type Get<'requestor,'item,'error> = 'requestor -> Async<Result<'item list,'error>>
注意:
直到我不得不写的是依赖于F#函数类型的C#代码我没有碰到这个问题。因此,我的C#代码被执行IO,因此想要使用任务类型。
失败的尝试:
我想写地道的F#代码,不希望都在我的F#签名洒C#的任务类型。
例如,我不想这样做:
type Get<'requestor,'item,'error> = 'requestor -> Task<Result<'item list,'error>>
我的挑战是,我还没有想出一个办法返回:
Async<Result<'item list,'error>>
这是我失败的例子:
let someLongRunningOperation = async { Ok [1] } // Returns Async<unit> instead of AsyncResult
结论:
总之,我怎么能返回异步结果类型参照以下失败的例子:
let someLongRunningOperation = async { Ok [1] }
内部计算表达式,你需要使用return
关键字在CE的类型来包装值。所以这:
let someLongRunningOperation = async { Ok [1] }
应更正如下:
let someLongRunningOperation = async { return Ok [1] }
然后你会返回一个Async<Result>
。