列出多个匿名/下划线参数以供理解



我对Scala/function有点陌生,所以我还不能使用技术语言。

我在理解方面遇到问题

val queries =
for {
_ <- createBanco
_ <- createBancoMedio
bankInsertions  <- Update[Banco](insertStr).updateMany(NonEmptyList.fromList(createBankList(1, maxBanks)).get)
mediumInsertions  <- Update[BancoMedio](mediumInsert).updateMany(NonEmptyList.fromList(mediumList).get)
bankCount <- BancoStatements.getCount().unique
bankGetIds <- BancoStatements.getIds(0, maxBanks).to[List]
bankSome <- BancoStatements.getSome(halfBanks).to[List]
} yield (bankCount, bankGetIds, bankSome)
//Execute database queries, saves them on tuple
val transactionResults : (Int, List[String], List[Banco]) = 
queries.transact(h2Transactor).unsafeRunSync()

我正在尝试重构 _ <- createBanco 和 _ <- createBancoMedio,它们都是 ConnectionIO[Int] 对象。

我喜欢将它们转换为单个列表(createBanco,createBancoMedio(,然后执行交易。

但是,我会通过这样做来改变理解的返回类型。我想知道是否有任何方法可以在不影响输出值的情况下做到这一点

基本上,将列表视为手动编写多个匿名参数。

如果G具有Applicative实例,则可以使用.sequenceList[G[A]]转换为G[List[A]]ConnectionIO这样做:

val queries =
for {
_ <- List(createBanco, createBancoMedio).sequence
...

刚刚解决了它,为列表做了另一个理解

val createList = for {
m <- createBancoMedio
b <- createBanco
} yield List(b, m)
val queries =
for {
_ <- createList ....

这样我就有了一个连接IO[列表[Int]]

最新更新