【问题标题】:remove first and last Element from scala.collection.immutable.Iterable[String]从 scala.collection.immutable.Iterable[String] 中删除第一个和最后一个元素
【发布时间】:2014-07-30 05:28:23
【问题描述】:

I am trying to convert my way of getting values from Form, but stuck some where

val os= for {
  m <- request.body.asFormUrlEncoded
  v <- m._2
} yield v

osscala.collection.immutable.Iterable[String],当我在控制台中打印它时

os map println

控制台

sedet impntc
sun
job
03AHJ_VutoHGVhGL70

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

【问题讨论】:

    标签: scala collections scala-collections


    【解决方案1】:

    使用drop 从前面删除,使用dropRight 从末尾删除。

    def removeFirstAndLast[A](xs: Iterable[A]) = xs.drop(1).dropRight(1)
    

    例子:

    removeFirstAndLast(List("one", "two", "three", "four")) map println
    

    输出:

    two
    three
    

    【讨论】:

    • 虽然看起来不错,但这个答案是不是有问题?似乎列表被复制了两次: 1. drop(1) 复制没有第一个元素的列表。 2. dropRight(1) 复制它没有最后一个元素。
    • @MaxG 不,因为链表上的drop 不涉及任何复制。
    • 请注意,如果您的Iterable 至少有两个元素,您可以使用inittail 分别选择除最后一个之外的所有元素和除第一个之外的所有元素:List("one", "two", "three", "four").init.tail
    【解决方案2】:

    另一种方法是使用slice

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2015-04-20
      相关资源
      最近更新 更多