3
我想创建一个地图类型,因此类似下面的可能:如何创建允许多种类型的键和值的Map类型?
VariantMap(1) = "Test"
VariantMap("a") = 42
和VariantMap("a")
将有一个类型的Option[Int]
。这是我迄今导致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
}
}
}
我是新来斯卡拉所以我道歉,如果我失去了一些东西明显。
是否有键/值类型的固定模式?或者你只是有几种关键类型和几种价值类型,前者中的任何一种与后者中的任何一种相关联?或者它只是对任何事情而言?在这种情况下,只需使用Map [Any,Any]并使用匹配作为输出值的类型大小写。 – 2010-06-05 14:14:51