Je voudrais créer un type de carte donc quelque chose comme ci-dessous est possible:Comment créer un type de carte qui autorise plusieurs types de clés et de valeurs?
VariantMap(1) = "Test"
VariantMap("a") = 42
et VariantMap("a")
aurait un type de Option[Int]
. Voici le code que je suis à ce jour qui se traduit par Option[Nothing]
:
object VariantMap {
import scala.reflect.Manifest
private var _map= Map.empty[Any,(Manifest[_], Any)]
def update[T](name: Any, item: T)(implicit m: Manifest[T]) {
_map = _map(name) = (m, item)
}
def apply[T](key:Any)(implicit m : Manifest[T]) = {
val o = _map.get(key)
o match {
case Some((om: Manifest[_], s : Any)) => Some[T](s.asInstanceOf[T])
case _ => None
}
}
}
Je suis nouveau scala donc je présente mes excuses si je manque quelque chose évidente.
Existe-t-il un modèle fixe de types clé/valeur? Ou avez-vous juste plusieurs types de clés et plusieurs types de valeur, l'un des premiers étant associé à l'un de ces derniers? Ou est-ce juste quelque chose à quoi que ce soit? Dans ce cas, utilisez simplement Map [Any, Any] et utilisez une correspondance comme cas de type sur les valeurs qui sortent. –