Перечислите несколько анонимных / подчеркивающих параметров для понимания
Я немного новичок в Scala/ функционал, поэтому я еще не могу использовать технический язык.
Я испытываю проблемы с пониманием
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) и затем выполнить транзакцию.
Тем не менее, я бы изменил тип возврата для понимания. Я хотел бы знать, есть ли способ сделать это, не влияя на выходное значение
По сути, обрабатывайте список так, как если бы я писал несколько анонимных параметров вручную.
2 ответа
Ты можешь использовать .sequence
повернуть List[G[A]]
в G[List[A]]
если G
имеет Applicative
экземпляр, который ConnectionIO
делает:
val queries =
for {
_ <- List(createBanco, createBancoMedio).sequence
...
Просто решил это, сделал другое для понимания для Списка
val createList = for {
m <- createBancoMedio
b <- createBanco
} yield List(b, m)
val queries =
for {
_ <- createList ....
Таким образом, у меня было ConnectionIO[Список [Int]]