Scala任务返回映射 [英] Scala Task return mapping

查看:99
本文介绍了Scala任务返回映射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个方法readHeader,该方法带有一个参数并返回 Task [List [Header]] ,另一种方法要求多个ID并返回 List [Task [List [EquipmentHeader]]] . 如何返回与多个ID读取功能兼容的 Task [List [List [List [Header]]] ".

I have a method readHeader which takes one argument and returns Task[List[Header]] and another method calls for multiple ids and returns List[Task[List[EquipmentHeader]]]. How to make a return of Task[List[List[Header]]] compatible with multiple id read function.

trait M1{
  def readHeader(id: String): Task[List[Header]]
}

def read(ids: List[String])(implicit m1:M1):Task[List[List[Header]]] = {
    if (ids.isEmpty) {
      Task(List.empty)
    } else {
         ids.map(m1.readHeader(_)) //List[Task[List[Header]]]
    }
  }

推荐答案

您可以在traverserel ="nofollow noreferrer"> cats :

You can use traverse from cats:

import cats.implicits._

ids.traverse(m1.readHeader) // Task[List[List[Header]]]

这篇关于Scala任务返回映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆