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

関数本体の内部では、 andが and であると想定しているreadため、コードは実際には汎用的ではありません。ジェネリック パラメーターはメソッド シグネチャの境界であり、引数の型または戻り値の型が何らかの形で相互に関連している場合にのみ役立ちます。TVString(Int, Int)

あなたのコードでは、read関数シグネチャで具象型を使用しても問題ないと思います。

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