我被困了,谷歌提供给我的解决方案(不是那么多)并没有以某种方式工作。这听起来微不足道,但现在让我忙了两个小时(也许我应该去散步......)。
我有一个类型XY
,oldList: List[XY]
的列表,其中包含元素。我需要的只是一个新的空List
同类型。
我已经尝试了类似的东西:
newList[classOf(oldList[0])]
newList = oldList.clone()
newList.clear()
但它并没有使用我不喜欢的MutableList
的方法。 :/
是否有最佳(或任何有效)的做法来创建某种类型的新List
?
感谢任何建议, 茶壶
P.S。如果它很简单,请不要太苛刻,我是Scala的新手。 :(
答案 0 :(得分:1)
可能有更好的解决方案,但从头到尾:
def nilOfSameType[T](l: List[T]) = List.empty[T]
val xs = List(1,2,3)
nilOfSameType(xs)
// List[Int] = List()
答案 1 :(得分:1)
由于空列表不包含任何内容,因此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
}
答案 2 :(得分:0)
如果你想要它是空的,你所要做的就是:
val newList = List [XY]()
只要我理解你的问题,真的是这样。