例如,我有跟随Scala列表,我想获得一个子列表,直到有一个要求可以满足.
val list = Seq(1,2,3,4,5,5,4,1,2,5)
Run Code Online (Sandbox Code Playgroud)
要求是数字是5,所以我希望结果如下:
Seq(1,2,3,4)
Run Code Online (Sandbox Code Playgroud)
目前我使用Scala集合indexWhere并splitAt返回:
list.splitAt(list.indexWhere(x => x == 5))
(Seq(1,2,3,4), Seq(5,5,4,1,2,5))
Run Code Online (Sandbox Code Playgroud)
我不确定有更好的方法来实现相同的更好的Scala集合的方法,我没有意识到?
你可以使用takeWhile:
scala> val list = Seq(1,2,3,4,5,5,4,1,2,5)
list: Seq[Int] = List(1, 2, 3, 4, 5, 5, 4, 1, 2, 5)
scala> list.takeWhile(_ != 5)
res30: Seq[Int] = List(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |