2016-12-23 3 views
1

Получение ошибок при использовании дженериков в Скале:Тип ошибки рассогласования при использовании дженериков в Скале

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 

ответ

3

Ваш код не является действительно универсальным, так как внутри read функции тела, вы принимают T и V - String и (Int, Int). Общие параметры являются границами вашей сигнатуры метода, и они полезны только тогда, когда типы аргументов или возвращаемые типы каким-то образом связаны друг с другом.

Я думаю, что ваш код будет прекрасно использовать конкретные типы в read подписи функции:

def read(fileName: String, mapName: mutable.Map[String, (Int, Int)]) { 
    mapName("abc") = (1,2) 
} 
Смежные вопросы