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

42
2个回答

72

使用 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
1
@MaxG 不,因为链表上的“drop”操作不需要涉及任何复制。 - Chris Martin
2
请注意,如果您的Iterable至少有2个元素,则可以使用inittail分别选择除最后一个元素外的所有元素和除第一个元素外的所有元素:List("one", "two", "three", "four").init.tail - Xavier Guihot

7
另一种方法是使用slice函数。
val os: Iterable[String] = Iterable("a","b","c","d")
val result = os.slice(1, os.size - 1) // Iterable("b","c")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接