J'ai la valeur mappings
:Scala générique générique et type spécifique
val mappings: Map[Class[_] ,Iterable[AttributeKeyAndValue] => AnyRef]
est-il possible de le rendre plus typé comme
val mappings: Map[Class[T], Iterable[AttributeKeyAndValue] => T]
où T
joue le même rôle que underscore. Je pense compilateur de se plaindre, si elle répond à ce code:
val mappings: Map[Class[T], Iterable[AttributeKeyAndValue] => T] = Map(
classOf[String], attrs => 1)
Cela fera pour une carte qui ne peut avoir qu'une seule clé. – pedromss
Eh bien, vous avez l'idée.Si vous avez une liste de valeurs que vous devez remplir, vous pouvez passer un seq comme paramètre: 'def mappings [T] (xs: Liste [AttributeKeyAndValue => T]): Map [Classe [T], AttributeKeyAndValue => T] = xs.map (x => classOf [T] -> x) .toMap' – Rumoku
Encore une fois, la carte retournée aura toutes ses clés paramétrées dans le même type. Ce qui serait bien dans les cas normaux, mais ici, si vous mettez un 'classOf [String]' comme une clé dans la carte, vous ne pouvez pas mettre une autre clé comme 'classOf [Int]'. Ceci est juste un comportement non naturel – pedromss