2016-12-23 6 views
1

Je obtiens des erreurs lors de l'utilisation des médicaments génériques en scala:incompatibilité de type d'erreur lors de l'utilisation des médicaments génériques dans 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) 
    } 

Erreur:

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

Répondre

3

Votre code n'est pas vraiment générique, car à l'intérieur read corps de la fonction, vous Supposons que T et V soient String et (Int, Int). Les paramètres génériques sont des bornes sur votre signature de méthode et ils ne sont utiles que lorsque les types d'arguments ou les types de retour sont en relation les uns avec les autres.

Je pense que votre code sera parfaitement bien d'utiliser des types de béton dans la signature de la fonction read:

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