在Scala中首次出现项目时拆分列表的最佳方法是什么?

时间:2019-04-08 16:23:19

标签: scala

在满足特定条件的元素首次出现时拆分class Entry(val time: Long, val info: String, val result: Boolean)的最佳方法是什么?如果列表中没有元素满足条件,则应返回原始列表。

我有一个定义如下的类:

List[Entry]

然后,我将获得以下条目对象的列表:result=true。 在具有List(e1, e2, e3, e4, e5, e6, e7)的元素首次出现时拆分列表的最佳方法是什么?因此,假设您有一个列表: e4,其中e6result=true具有(List(e1,e2,e3), List(e4,e5,e6,e7)),那么返回的结果应该是两个列表,如下所示: result=true。或者,如果所有元素都不具有(List(e1, e2, e3, e4, e5, e6, e7), List()),则应返回列表.indexOf

我已经尝试过使用.splitAtval list = List(e1, e2, e3, e4, e5, e6, e7) val (beforeSuccess, afterSuccess) = list.splitAt(list.indexOf(_.result == true)) 了,但这似乎不起作用:

{{1}}

1 个答案:

答案 0 :(得分:4)

您需要使用span方法:

list.span(_.result == false)

这等效于takeWhile/dropWhile,但可能更快。