Использование splitAt
следующим образом,
val (l,r) = xs.splitAt(k)
l ++ r.drop(1)
Также аналогичным образом с использованием zipWithIndex
, мы генерируем диапазон индексов и отфильтровываем их со значением k
, затем мы можем извлечь остальные, например,
(0 until xs.size).filter(_ != k).map(xs)
Использование collect
,
(0 until xs.size).collect {
case x if x != k => xs(x)
}
Использование для понимания,
for (i <- 0 until xs.size if i != k) yield xs(i)
Более общая форма, в которой у нас есть множество индексов, чтобы исключить, а именно для
val exclude = Set(k,k+3)
for (i <- 0 until xs.size if !exclude(i)) yield xs(i)
мы отображаем индексы не в exclude
.
Спасибо за наконечник буфера, вот что я искал – Nicofisi