0

我有一个返回 Task[List[List[A]]] 的方法,如果列表大于 0,我需要转换为 Task[A]

def method():Task[List[List[A]]] = {}

val d:Task[List[A]] = method().map(_.flatten)

如果内部方法有多个元素,如何获取 Task[A] 是 A 的列表

如上所示,我可以转换为 Task[List[A]]

4

1 回答 1

1

您以直观的方式将 扁平List[List[A]]化为 a List[A],全部包裹在 a 中Task。如果您提供从 aList[A]到 an的方法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,它将返回一个Option[T]而不是T

于 2019-12-31T13:06:54.960 回答