在满足特定条件的元素首次出现时拆分class Entry(val time: Long, val info: String, val result: Boolean)
的最佳方法是什么?如果列表中没有元素满足条件,则应返回原始列表。
我有一个定义如下的类:
List[Entry]
然后,我将获得以下条目对象的列表:result=true
。
在具有List(e1, e2, e3, e4, e5, e6, e7)
的元素首次出现时拆分列表的最佳方法是什么?因此,假设您有一个列表:
e4
,其中e6
和result=true
具有(List(e1,e2,e3), List(e4,e5,e6,e7))
,那么返回的结果应该是两个列表,如下所示:
result=true
。或者,如果所有元素都不具有(List(e1, e2, e3, e4, e5, e6, e7), List())
,则应返回列表.indexOf
。
我已经尝试过使用.splitAt
和val list = List(e1, e2, e3, e4, e5, e6, e7)
val (beforeSuccess, afterSuccess) = list.splitAt(list.indexOf(_.result == true))
了,但这似乎不起作用:
{{1}}
答案 0 :(得分:4)
您需要使用span
方法:
list.span(_.result == false)
这等效于takeWhile/dropWhile
,但可能更快。