如何在scala中的特定索引处启动foreach循环?

时间:2016-07-13 14:02:07

标签: scala loops foreach

我是scala的新手,并且想知道如何在scala中的特定索引处启动foreach循环?我的代码目前看起来像这样:

var i = list.indexOf("three")
for(n <-list){
    /*do some operation*/
}

这里“list”包含一个字符串列表[“one”,“two”,“three”,“four”,“five”]。我希望我的每个循环从索引i开始操作而忽略它之前的所有vaues(即只考虑值“four”和“five”),而不是从列表的开头开始。

有人可以帮我吗?提前谢谢

2 个答案:

答案 0 :(得分:4)

使用drop

for (n <- list.drop(i)) {...}

答案 1 :(得分:0)

嗯,你可以使用.drop,就像其他答案所暗示的那样,但在这种情况下做错了。你最终遍历列表的头部两次,这是低效的,而且不够优雅。

只需一次扫描即可完成同样的事情:

list
 .dropWhile(_ != "three")
 .tail
 .foreach { n => 
   ...
 }