如何使用让!在 F# 中的 seq {} 块内并产生结果
How to use let! within a seq {} block in F# and yield result
我需要弄清楚如何在一个序列中使用 let!
。
注意:这是异步函数的一部分,matchTransaction 函数也是异步的。
let matchedTransactions
= seq {
for cardTransactionWithOrder in cardTransactionswithOrder do
let! matchedTranaction = matchTransaction(page,bnzBatch,cardTransactionWithOrder)
yield! matchedTranaction
}
我收到下面的错误,它与我正在做的事情并不完全匹配,因为 matchTranaction 函数 returns 记录(特定类型)而不是集合。
Error FS0795 The use of 'let! x = coll' in sequence expressions is not permitted. Use 'for x in coll' instead.
matchedTransaction
是 Async<'a>
类型。您可以构建这些异步调用的 seq
并以 Async<'a> seq
结束,然后您可以使用 Async.Parallel
.
获得等待结果
您遇到的错误是您试图在 seq
计算表达式中使用 Async's
let!
。编译器假定您正在尝试使用 Seq's
let!
。
let matchedTransactions = // Async<'a []>, if this is inside of an async {} block, you can use let! here
let matchedTransactionsAsync = // seq<Async<'a>>
seq { for cardTransactionWithOrder in cardTransactionswithOrder do
matchTransaction(page,bnzBatch,cardTransactionWithOrder) }
matchedTransactionsAsync |> Async.Parallel // Async<'a []>
我需要弄清楚如何在一个序列中使用 let!
。
注意:这是异步函数的一部分,matchTransaction 函数也是异步的。
let matchedTransactions
= seq {
for cardTransactionWithOrder in cardTransactionswithOrder do
let! matchedTranaction = matchTransaction(page,bnzBatch,cardTransactionWithOrder)
yield! matchedTranaction
}
我收到下面的错误,它与我正在做的事情并不完全匹配,因为 matchTranaction 函数 returns 记录(特定类型)而不是集合。
Error FS0795 The use of 'let! x = coll' in sequence expressions is not permitted. Use 'for x in coll' instead.
matchedTransaction
是 Async<'a>
类型。您可以构建这些异步调用的 seq
并以 Async<'a> seq
结束,然后您可以使用 Async.Parallel
.
您遇到的错误是您试图在 seq
计算表达式中使用 Async's
let!
。编译器假定您正在尝试使用 Seq's
let!
。
let matchedTransactions = // Async<'a []>, if this is inside of an async {} block, you can use let! here
let matchedTransactionsAsync = // seq<Async<'a>>
seq { for cardTransactionWithOrder in cardTransactionswithOrder do
matchTransaction(page,bnzBatch,cardTransactionWithOrder) }
matchedTransactionsAsync |> Async.Parallel // Async<'a []>