我試圖寫一些功能,根據輸入類型做不同的事情。 例如,我這樣做:斯卡拉鑄造仿製藥的麻煩
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
與String
S,不Long
秒。對不起我的noob問題,我想了解scala和泛型。
你在REPL檢查你的代碼?一切都很美好。 'scala.collection.mutable.ArrayBuffer [Long] = ArrayBuffer(23,342)' – 2014-10-29 08:35:44
不知道目標是什麼,但鑄造正在打破類型安全。 – cchantep 2014-10-29 08:44:33
你的'ArrayBuffer'對你來說沒有太大的幫助。爲什麼不直接返回列表中的映射結果(使用答案中提到的其中一個轉換器函數)? – acjay 2014-10-29 10:35:09