在scala中使用泛型时出错:
import scala.collection.mutable
class test {
val car = mutable.Map.emprty[String, (Int,Int)]
read[String, (Int,Int)] ("file.txt",car)
def read[T,V] (fileName:String, mapName: mutable.Map[T,V]) {
mapName("abc") = (1,2)
}
错误:
error: type mismatch
found: java.lang.String("abc")
required: T
答案 0 :(得分:3)
您的代码并非通用,因为在read
函数体内,您假定T
和V
为String
和(Int, Int)
。泛型参数是方法签名的边界,只有当参数类型或返回类型以某种方式相互关联时,它们才有用。
我认为在read
函数签名中使用具体类型的代码非常好:
def read(fileName: String, mapName: mutable.Map[String, (Int, Int)]) {
mapName("abc") = (1,2)
}