gpt4 book ai didi

asynchronous - F# 使用异步返回值

转载 作者:行者123 更新时间:2023-12-04 05:13:09 25 4
gpt4 key购买 nike

我正在尝试学习 F#,但我一直遇到问题。最新的是使用异步。在下面的代码中,我试图运行两个长时间运行的操作并根据结果执行计算,但出现错误“异步不支持 + 运算符”。我试过类型转换等来让它工作,但我没有快速到达任何地方。

有人可以解释一下我哪里出错了。

谢谢。

let SumOfOpFaults =
async{
printfn "Getting Sum of Op Faults"
return query {
for a in AlarmResult do
sumBy a.UserFaultTime
}
}

let SumOfMcFaults =
async{
printfn "Getting Sum of Machine Faults"
return query {
for a in AlarmResult do
sumBy a.MachineFaultTime
}
}

[SumOfMcFaults; SumOfOpFaults]
|> Async.Parallel
|> Async.RunSynchronously
|> ignore

let total = SumOfOpFaults + SumOfMcFaults // <---Error Here

最佳答案

SumOfOpFaults定义为 Async<'T> .它永远不会变成 'T所以你不能使用 +稍后再谈。
Async.Parallel转动 Async 的任意序列计算合一 Async并行运行它们并返回一个数组的计算。
Async.RunSynchronously不会通过副作用为您提供结果,而是作为返回值。所以你只需要这样做:

let total =
[SumOfMcFaults; SumOfOpFaults]
|> Async.Parallel
|> Async.RunSynchronously
|> Array.sum

关于asynchronous - F# 使用异步返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39467102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com