Task[List[List[A]]] 到 Task[A] 如果列表有元素
Task[List[List[A]]] to Task[A] if list has elements
我有一个方法 returns Task[List[List[A]]],如果列表大于 0
,我需要转换为 Task[A]
def method():Task[List[List[A]]] = {}
val d:Task[List[A]] = method().map(_.flatten)
如果内部方法的元素多于0,如何获取Task[A]是A的列表
我可以转换为 Task[List[A]],正如您在上面看到的
您以直观的方式将 List[List[A]]
扁平化为 List[A]
,全部包裹在 Task
中。如果您提供从 List[A]
到 A
的方法(编辑:见下文),那么您可以从任务的地图中调用它,如下所示。
def method():Task[List[List[A]]] = {}
def listToItem(list: List[A]): A = ???
def d: Task[A] = method().map(_.flatten).map(listToItem(_))
你说你想要 listToItem
取列表的第一个元素。不幸的是,如果列表为空,这样的函数将不知道该做什么。您可以使用 list.head
,如果列表为空,它将抛出异常,或者您可以使用 list.headOption
,它将 return 和 Option[T]
而不是 T
.
我有一个方法 returns Task[List[List[A]]],如果列表大于 0
,我需要转换为 Task[A]def method():Task[List[List[A]]] = {}
val d:Task[List[A]] = method().map(_.flatten)
如果内部方法的元素多于0,如何获取Task[A]是A的列表
我可以转换为 Task[List[A]],正如您在上面看到的
您以直观的方式将 List[List[A]]
扁平化为 List[A]
,全部包裹在 Task
中。如果您提供从 List[A]
到 A
的方法(编辑:见下文),那么您可以从任务的地图中调用它,如下所示。
def method():Task[List[List[A]]] = {}
def listToItem(list: List[A]): A = ???
def d: Task[A] = method().map(_.flatten).map(listToItem(_))
你说你想要 listToItem
取列表的第一个元素。不幸的是,如果列表为空,这样的函数将不知道该做什么。您可以使用 list.head
,如果列表为空,它将抛出异常,或者您可以使用 list.headOption
,它将 return 和 Option[T]
而不是 T
.