user1534615
user1534615

Reputation: 101

Error type mismatch while using generics in scala

Getting errors while using generics in 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:

   error: type mismatch
   found: java.lang.String("abc")
   required: T

Upvotes: 1

Views: 190

Answers (1)

adamwy
adamwy

Reputation: 1239

Your code isn't really generic, because inside read function body, you are assuming T and V to be String and (Int, Int). The generic parameters are bounds on your method signature and they are only useful when types of arguments or return types relate in some way to each other.

I think with your code will be perfectly fine to use concrete types in the read function signature:

def read(fileName: String, mapName: mutable.Map[String, (Int, Int)]) {
  mapName("abc") = (1,2)
}

Upvotes: 3

Related Questions