Предполагая, что у меня есть коллекция (Vector[Int]),1,2,5,4,3,5,5,5,6,7,7
и я хочу получить другую коллекцию (Vector[Vector[Int]]), соединяющую каждое число 5 со следующим числом (1),(2),(5,4),(3),(5,5),(5,6),(7),(7)
, какие у меня есть варианты, кроме этого:
var input= Vector.[Int]
var output = Vector.empty[Vector[Int]]
var skip = false
for(i <- input.indices){
if (input(i) == 5 && skip == false){
output = output :+ input(i) :+ input(i + 1)
skip = true;
}else if(input(i - 1) != 5){
output = output :+ input(i)
}else{
skip = false;
}
}
который работает, но не очень похож на scala. Можно ли было бы добиться того же результата с помощью для понимания? for(x ‹- c; if cond) yield {...}