繁体   English   中英

Scala:创建相同类型的新列表

[英]Scala: Create new list of same type

我被困了,谷歌提供给我的解决方案(不是那么多)不能以某种方式工作。 这听起来微不足道,但现在让我忙了两个小时(也许我应该去散步......)。

我有一个XY类型的列表, oldList: List[XY]包含元素。 我需要的只是一个相同类型的新的空List

我已经尝试过这样的东西:

newList[classOf(oldList[0])]
newList = oldList.clone()
newList.clear()

但它不起作用或不采取MutableList ,我不喜欢。 :/

是否有最好(或任何工作)的做法来创建某种类型的新List

感谢任何建议,茶壶

PS请不要太苛刻,如果它很简单,我是Scala的新手。 :(

可能有更好的解决方案,但从我的头脑:

def nilOfSameType[T](l: List[T]) = List.empty[T]
val xs = List(1,2,3)
nilOfSameType(xs)
// List[Int] = List()

因为空列表不包含任何内容,所以type参数实际上并不重要 - 空List[Int]与空List[String] 事实上,他们是完全相同的对象, Nil Nil有类型List[Nothing] ,可以向任何其他类型的List上传。

通常,虽然在处理带有类型参数的类型时,旧值的类型参数将在范围内,并且可用于创建新实例。 所以是一个可变集合的通用方法,其中类型参数即使是空的也很重要:

def processList[T](oldList: collection.mutable.Buffer[T]) = {
  val newList = collection.mutable.Buffer[T]()
  // Do something with oldList and newList
}

如果你想要它是空的,你所要做的就是:

val newList = List [XY]()

只要我理解你的问题,就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM