作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个看起来像这样的列表
{A, B, C, D, E}
我想遍历这个列表,每次获取越来越多的元素,所以每次迭代看起来像:
Iteration 1: {A}
Iteration 2: {A, B}
Iteration 3: {A, B, C}
Iteration 4: {A, B, C, D}
Iteration 5: {A, B, C, D, E}
目前我正在通过以下方式完成此任务:
(1 to list.size).foreach( n => {
val elements = list.take(n)
// Do something with elements
})
但这感觉很乱。是否有更“scala”的方式来完成这种行为?
最佳答案
你可以使用 list.inits
:
scala> List(1,2,3,4,5).inits.foreach(println)
List(1, 2, 3, 4, 5)
List(1, 2, 3, 4)
List(1, 2, 3)
List(1, 2)
List(1)
List()
为了得到你想要的输出,你需要从迭代器创建一个列表,反转它并取尾以省略空列表:
scala> List(1,2,3,4,5).inits.toList.reverse.tail.foreach(println)
List(1)
List(1, 2)
List(1, 2, 3)
List(1, 2, 3, 4)
List(1, 2, 3, 4, 5)
关于scala - 遍历一个列表,每次获取越来越多的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62070421/
我是一名优秀的程序员,十分优秀!