【发布时间】:2014-10-29 08:31:34
【问题描述】:
我尝试编写一些根据输入类型执行不同操作的函数。 例如,我这样做:
def Foo[T](inList: List[String]): ArrayBuffer[T] = {
val out: ArrayBuffer[T] = new ArrayBuffer[T]()
inList.map ( x => {
val str = x.substring(1)
out += str.asInstanceOf[T]
})
out
}
但是如果我用Foo[Long](new List("123","2342")) 调用这个函数,我会得到一个ArrayBuffer 和Strings,而不是Longs。对不起,我的菜鸟问题,我想了解 scala 和泛型。
【问题讨论】:
-
你在 REPL 中检查过你的代码吗?一切看起来都很好。
scala.collection.mutable.ArrayBuffer[Long] = ArrayBuffer(23, 342) -
不知道目标是什么,但强制转换破坏了类型安全。
-
您的
ArrayBuffer对您没有多大帮助。为什么不只返回列表映射的结果(使用答案中提到的转换器函数之一)?