例如我有以下Scala列表,我想要一個子列表,直到有一個需求可以被滿足。斯卡拉集合選擇元素,直到第一個滿足要求
val list = Seq(1,2,3,4,5,5,4,1,2,5)
的要求是數爲5個,所以我想要的結果爲:
Seq(1,2,3,4)
目前我使用Scala的集合的indexWhere
和splitAt
返回:
list.splitAt(list.indexWhere(x => x == 5))
(Seq(1,2,3,4), Seq(5,5,4,1,2,5))
我不是肯定有更好的方法來實現更好的斯卡拉收集的方法,我沒有意識到?
我不是很有趣,但你是否嘗試閱讀文檔?當我認爲可能有標準方法的時候,我做的第一件事就是掃描Seq方法列表(這種情況下),這會很快導致你'span'和'takeWhile'('takeWhile''這個名字在這種情況下特別暗示)。見http://www.scala-lang.org/api/current/index.html#[email protected](p:A=>Boolean):Repr –