1

在 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
4

1 回答 1

3

您的代码并不是真正通用的,因为在read函数体内,您假设TandVStringand (Int, Int)。泛型参数是方法签名的界限,它们仅在参数类型或返回类型以某种方式相互关联时才有用。

我认为您的代码可以很好地在read函数签名中使用具体类型:

def read(fileName: String, mapName: mutable.Map[String, (Int, Int)]) {
  mapName("abc") = (1,2)
}
于 2016-12-23T11:44:29.253 回答