从scala.collection.immutable.Iterable [String]中删除第一个和最后一个元素

Gov*_*ngh 29 collections scala scala-collections

我试图改变我从中获取价值的方式Form,但在某些地方停留

val os= for {
  m <- request.body.asFormUrlEncoded
  v <- m._2
} yield v
Run Code Online (Sandbox Code Playgroud)

osscala.collection.immutable.Iterable[String]当我打印控制台

os map println
Run Code Online (Sandbox Code Playgroud)

安慰

sedet impntc
sun
job
03AHJ_VutoHGVhGL70
Run Code Online (Sandbox Code Playgroud)

我想从中删除第一个和最后一个元素.

Chr*_*tin 51

用于drop从前面dropRight拆下并从末端卸下.

def removeFirstAndLast[A](xs: Iterable[A]) = xs.drop(1).dropRight(1)
Run Code Online (Sandbox Code Playgroud)

例:

removeFirstAndLast(List("one", "two", "three", "four")) map println
Run Code Online (Sandbox Code Playgroud)

输出:

two
three
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果你的 Iterable 至少有 2 个元素,你可以使用 [`init`](https://www.scala-lang.org/api/current/scala/collection/Iterable.html#init:Repr)和 [`tail`](https://www.scala-lang.org/api/current/scala/collection/Iterable.html#tail:Repr) 分别选择除最后一个之外的所有元素和除第一个之外的所有元素: `List("一", "二", "三", "四").init.tail` (2认同)

Kig*_*gyo 5

另一种方法是使用slice.

val os: Iterable[String] = Iterable("a","b","c","d")
val result = os.slice(1, os.size - 1) // Iterable("b","c")
Run Code Online (Sandbox Code Playgroud)