有没有办法从Scala中的地图获取键/值类型?

时间:2016-04-10 17:12:15

标签: scala types

在C ++中,我们可以从定义的地图中获取抽象键/值类型(key_typevalue_typehttp://en.cppreference.com/w/cpp/container/map)。当我需要稍后更改地图类型时,这非常方便,因为依赖类型会相应地更改。

在Scala我也在寻找这样的功能。例如,我定义了一个地图类型:

type MapTy : mutable.Map[Long, Int]

我希望返回地图的条目(其类型为Long->Int)。返回类型取决于MapTy,最好在函数签名中明确指定,写成MapTy::key_type->MapTy::value_type之类的东西。因此,稍后我将MapTy更改为

type MapTy : mutable.Map[Int, Int]

条目类型也会同时更改为Int->Int

Scala可以吗?

1 个答案:

答案 0 :(得分:2)

在Scala中,泛型类型在擦除时丢失,因此在运行时不可能。有人可能会说明如何做到这一点,直到那时这是一个解决方法:

type Key = Int
type Value = Long
type Map = mutable.Map[Key, Value]

此外,this可能会有所帮助。